Compare commits
29 Commits
136ed487de
...
e4c863a51d
Author | SHA1 | Date | |
---|---|---|---|
|
e4c863a51d | ||
|
d3cb9d638d | ||
|
a931a75c4f | ||
|
79c57b5b80 | ||
|
a84c67da71 | ||
|
ecc9904996 | ||
|
b8db83940b | ||
|
110e76a140 | ||
|
3bd477b454 | ||
|
1b7336583c | ||
|
3ab13ddc4b | ||
|
73d913519d | ||
|
4a73fbda8b | ||
|
fd2295c545 | ||
|
8bf5873272 | ||
|
dfe6d0f8ce | ||
|
929f2ae06b | ||
|
ef57fa8a29 | ||
|
a7da10fea8 | ||
|
a807604ef6 | ||
|
a31479316d | ||
|
fc01879341 | ||
|
a49815926c | ||
|
2e7e51be56 | ||
|
325a9af5e0 | ||
|
8d0bf4ed39 | ||
|
c48fd73189 | ||
|
a8b52cd9d6 | ||
|
8581e69e4f |
@ -41,6 +41,9 @@ name = "basic"
|
||||
show_index_summary = true
|
||||
show_class_hierarchy = true
|
||||
|
||||
[source-location]
|
||||
base_url = "https://gitlab.gnome.org/GNOME/glib/-/blob/main/"
|
||||
|
||||
[extra]
|
||||
urlmap_file = "../urlmap.js"
|
||||
# The same order will be used when generating the index
|
||||
|
@ -41,6 +41,9 @@ name = "basic"
|
||||
show_index_summary = true
|
||||
show_class_hierarchy = true
|
||||
|
||||
[source-location]
|
||||
base_url = "https://gitlab.gnome.org/GNOME/glib/-/blob/main/"
|
||||
|
||||
[extra]
|
||||
urlmap_file = "../urlmap.js"
|
||||
# The same order will be used when generating the index
|
||||
|
@ -36,6 +36,9 @@ name = "basic"
|
||||
show_index_summary = true
|
||||
show_class_hierarchy = true
|
||||
|
||||
[source-location]
|
||||
base_url = "https://gitlab.gnome.org/GNOME/glib/-/blob/main/"
|
||||
|
||||
[extra]
|
||||
urlmap_file = "../urlmap.js"
|
||||
# The same order will be used when generating the index
|
||||
|
@ -41,6 +41,9 @@ name = "basic"
|
||||
show_index_summary = true
|
||||
show_class_hierarchy = true
|
||||
|
||||
[source-location]
|
||||
base_url = "https://gitlab.gnome.org/GNOME/glib/-/blob/main/"
|
||||
|
||||
[extra]
|
||||
urlmap_file = "../urlmap.js"
|
||||
# The same order will be used when generating the index
|
||||
|
@ -0,0 +1,138 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!--
|
||||
SPDX-License-Identifier: CC0-1.0
|
||||
SPDX-FileCopyrightText: Rory O'Kane at Wikimedia Commons
|
||||
<https://commons.wikimedia.org/wiki/File:Sorted_binary_tree_breadth-first_traversal.svg>
|
||||
SPDX-FileCopyrightText: 2024 Frank Dana
|
||||
-->
|
||||
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
|
||||
width="266px" height="212px" viewBox="0 0 266 212" enable-background="new 0 0 266 212" xml:space="preserve">
|
||||
<g>
|
||||
<g>
|
||||
<line fill="none" stroke="#90c2ff" stroke-width="2" stroke-miterlimit="10" x1="27.23" y1="23.192" x2="29.23" y2="23.192"/>
|
||||
|
||||
<line fill="none" stroke="#90c2ff" stroke-width="2" stroke-miterlimit="10" stroke-dasharray="3.9562,3.9562" x1="33.187" y1="23.192" x2="236.932" y2="23.192"/>
|
||||
<polyline fill="none" stroke="#90c2ff" stroke-width="2" stroke-miterlimit="10" points="238.91,23.192 240.91,23.192
|
||||
238.97,23.677 "/>
|
||||
|
||||
<line fill="none" stroke="#90c2ff" stroke-width="2" stroke-miterlimit="10" stroke-dasharray="3.9907,3.9907" x1="235.099" y1="24.646" x2="27.971" y2="76.427"/>
|
||||
<polyline fill="none" stroke="#90c2ff" stroke-width="2" stroke-miterlimit="10" points="26.035,76.912 24.095,77.396
|
||||
26.095,77.396 "/>
|
||||
|
||||
<line fill="none" stroke="#90c2ff" stroke-width="2" stroke-miterlimit="10" stroke-dasharray="4.0154,4.0154" x1="30.11" y1="77.396" x2="236.902" y2="77.396"/>
|
||||
<polyline fill="none" stroke="#90c2ff" stroke-width="2" stroke-miterlimit="10" points="238.91,77.396 240.91,77.396
|
||||
238.97,77.881 "/>
|
||||
|
||||
<line fill="none" stroke="#90c2ff" stroke-width="2" stroke-miterlimit="10" stroke-dasharray="3.9907,3.9907" x1="235.099" y1="78.85" x2="27.971" y2="130.631"/>
|
||||
<polyline fill="none" stroke="#90c2ff" stroke-width="2" stroke-miterlimit="10" points="26.035,131.114 24.095,131.6
|
||||
26.095,131.6 "/>
|
||||
|
||||
<line fill="none" stroke="#90c2ff" stroke-width="2" stroke-miterlimit="10" stroke-dasharray="4.0154,4.0154" x1="30.11" y1="131.6" x2="236.902" y2="131.6"/>
|
||||
<polyline fill="none" stroke="#90c2ff" stroke-width="2" stroke-miterlimit="10" points="238.91,131.6 240.91,131.6
|
||||
238.97,132.085 "/>
|
||||
|
||||
<line fill="none" stroke="#90c2ff" stroke-width="2" stroke-miterlimit="10" stroke-dasharray="3.9907,3.9907" x1="235.099" y1="133.053" x2="27.971" y2="184.835"/>
|
||||
<polyline fill="none" stroke="#90c2ff" stroke-width="2" stroke-miterlimit="10" points="26.035,185.318 24.095,185.804
|
||||
26.095,185.804 "/>
|
||||
|
||||
<line fill="none" stroke="#90c2ff" stroke-width="2" stroke-miterlimit="10" stroke-dasharray="4.0086,4.0086" x1="30.104" y1="185.804" x2="228.53" y2="185.804"/>
|
||||
|
||||
<line fill="none" stroke="#90c2ff" stroke-width="2" stroke-miterlimit="10" x1="230.534" y1="185.804" x2="232.534" y2="185.804"/>
|
||||
<g>
|
||||
<rect fill="#90c2ff" x="24.095" y="19.892" width="6.602" height="6.602"/>
|
||||
</g>
|
||||
<g>
|
||||
<path fill="#90c2ff" d="M238.569,185.804c-2.84,1.054-6.363,2.852-8.548,4.756l1.721-4.756l-1.721-4.755
|
||||
C232.206,182.953,235.729,184.751,238.569,185.804z"/>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
<g id="graph0">
|
||||
<title>sorted_binary_tree</title>
|
||||
<g id="node1">
|
||||
<title>C</title>
|
||||
<ellipse fill="#FFFFFF" stroke="#ffffff" cx="60.23" cy="185.804" rx="18.067" ry="18.067"/>
|
||||
<text transform="matrix(1 0 0 1 55.5435 190.8223)" font-family="'Times-Roman'" font-size="14.0528">C</text>
|
||||
</g>
|
||||
<g id="node2">
|
||||
<title>E</title>
|
||||
<ellipse fill="#FFFFFF" stroke="#ffffff" cx="132.502" cy="185.804" rx="18.067" ry="18.067"/>
|
||||
<text transform="matrix(1 0 0 1 128.21 190.8223)" font-family="'Times-Roman'" font-size="14.0528">E</text>
|
||||
</g>
|
||||
<g id="node3">
|
||||
<title>H</title>
|
||||
<ellipse fill="#FFFFFF" stroke="#ffffff" cx="204.773" cy="185.804" rx="17.064" ry="18.067"/>
|
||||
<text transform="matrix(1 0 0 1 199.6992 190.8223)" font-family="'Times-Roman'" font-size="14.0528">H</text>
|
||||
</g>
|
||||
<g id="node4">
|
||||
<title>A</title>
|
||||
<ellipse fill="#FFFFFF" stroke="#ffffff" cx="24.094" cy="131.6" rx="17.064" ry="18.068"/>
|
||||
<text transform="matrix(1 0 0 1 19.02 136.6191)" font-family="'Times-Roman'" font-size="14.0528">A</text>
|
||||
</g>
|
||||
<g id="node5">
|
||||
<title>D</title>
|
||||
<ellipse fill="#FFFFFF" stroke="#ffffff" cx="96.366" cy="131.6" rx="17.064" ry="18.068"/>
|
||||
<text transform="matrix(1 0 0 1 91.292 136.6191)" font-family="'Times-Roman'" font-size="14.0528">D</text>
|
||||
</g>
|
||||
<g id="edge6">
|
||||
<title>D->C</title>
|
||||
<path fill="none" stroke="#ffffff" d="M86.328,147.66c-3.011,4.016-7.026,9.034-10.038,14.053"/>
|
||||
<polygon fill="#ffffff" stroke="#ffffff" points="78.298,164.725 70.268,170.747 73.279,160.709 "/>
|
||||
</g>
|
||||
<g id="edge8">
|
||||
<title>D->E</title>
|
||||
<path fill="none" stroke="#ffffff" d="M106.404,147.66c3.011,4.016,7.026,9.034,10.038,14.053"/>
|
||||
<polygon fill="#ffffff" stroke="#ffffff" points="119.453,160.709 122.464,170.747 114.434,164.725 "/>
|
||||
</g>
|
||||
<g id="node6">
|
||||
<title>I</title>
|
||||
<ellipse fill="#FFFFFF" stroke="#ffffff" cx="240.909" cy="131.6" rx="18.068" ry="18.068"/>
|
||||
<text transform="matrix(1 0 0 1 238.5693 136.6191)" font-family="'Times-Roman'" font-size="14.0528">I</text>
|
||||
</g>
|
||||
<g id="edge12">
|
||||
<title>I->H</title>
|
||||
<path fill="none" stroke="#ffffff" d="M230.871,146.656c-3.011,5.02-6.021,10.038-10.037,15.057"/>
|
||||
<polygon fill="#ffffff" stroke="#ffffff" points="223.846,163.721 214.812,169.743 217.822,159.705 "/>
|
||||
</g>
|
||||
<g id="node7">
|
||||
<title>B</title>
|
||||
<ellipse fill="#FFFFFF" stroke="#ffffff" cx="60.23" cy="77.396" rx="18.068" ry="18.068"/>
|
||||
<text transform="matrix(1 0 0 1 55.5435 82.415)" font-family="'Times-Roman'" font-size="14.0528">B</text>
|
||||
</g>
|
||||
<g id="edge3">
|
||||
<title>B->A</title>
|
||||
<path fill="none" stroke="#ffffff" d="M50.192,92.453c-3.011,5.019-6.022,10.038-10.038,15.057"/>
|
||||
<polygon fill="#ffffff" stroke="#ffffff" points="43.166,109.518 34.132,115.539 37.144,105.502 "/>
|
||||
</g>
|
||||
<g id="edge5">
|
||||
<title>B->D</title>
|
||||
<path fill="none" stroke="#ffffff" d="M70.268,92.453c3.011,5.019,6.022,10.038,10.038,15.057"/>
|
||||
<polygon fill="#ffffff" stroke="#ffffff" points="83.317,105.502 86.328,115.539 77.294,109.518 "/>
|
||||
</g>
|
||||
<g id="node8">
|
||||
<title>G</title>
|
||||
<ellipse fill="#FFFFFF" stroke="#ffffff" cx="204.773" cy="77.396" rx="17.064" ry="18.068"/>
|
||||
<text transform="matrix(1 0 0 1 199.6992 82.415)" font-family="'Times-Roman'" font-size="14.0528">G</text>
|
||||
</g>
|
||||
<g id="edge11">
|
||||
<title>G->I</title>
|
||||
<path fill="none" stroke="#ffffff" d="M214.812,93.457c3.011,4.015,7.026,9.034,10.038,14.053"/>
|
||||
<polygon fill="#ffffff" stroke="#ffffff" points="227.86,106.506 230.871,116.543 222.842,110.521 "/>
|
||||
</g>
|
||||
<g id="node9">
|
||||
<title>F</title>
|
||||
<ellipse fill="#FFFFFF" stroke="#ffffff" cx="132.502" cy="23.192" rx="18.068" ry="18.068"/>
|
||||
<text transform="matrix(1 0 0 1 128.5942 28.2109)" font-family="'Times-Roman'" font-size="14.0528">F</text>
|
||||
</g>
|
||||
<g id="edge2">
|
||||
<title>F->B</title>
|
||||
<path fill="none" stroke="#ffffff" d="M117.445,34.234c-11.042,8.03-23.087,17.064-34.128,26.098"/>
|
||||
<polygon fill="#ffffff" stroke="#ffffff" points="85.325,63.343 75.287,66.354 81.31,57.321 "/>
|
||||
</g>
|
||||
<g id="edge10">
|
||||
<title>F->G</title>
|
||||
<path fill="none" stroke="#ffffff" d="M147.559,34.234c11.041,8.03,23.087,17.064,34.129,26.098"/>
|
||||
<polygon fill="#ffffff" stroke="#ffffff" points="183.694,57.321 189.717,66.354 179.68,63.343 "/>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 7.2 KiB |
@ -1,134 +1,138 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
||||
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
|
||||
width="266px" height="212px" viewBox="0 0 266 212" enable-background="new 0 0 266 212" xml:space="preserve">
|
||||
<g>
|
||||
<g>
|
||||
<line fill="none" stroke="#000000" stroke-width="2" stroke-miterlimit="10" x1="27.23" y1="23.192" x2="29.23" y2="23.192"/>
|
||||
|
||||
<line fill="none" stroke="#000000" stroke-width="2" stroke-miterlimit="10" stroke-dasharray="3.9562,3.9562" x1="33.187" y1="23.192" x2="236.932" y2="23.192"/>
|
||||
<polyline fill="none" stroke="#000000" stroke-width="2" stroke-miterlimit="10" points="238.91,23.192 240.91,23.192
|
||||
238.97,23.677 "/>
|
||||
|
||||
<line fill="none" stroke="#000000" stroke-width="2" stroke-miterlimit="10" stroke-dasharray="3.9907,3.9907" x1="235.099" y1="24.646" x2="27.971" y2="76.427"/>
|
||||
<polyline fill="none" stroke="#000000" stroke-width="2" stroke-miterlimit="10" points="26.035,76.912 24.095,77.396
|
||||
26.095,77.396 "/>
|
||||
|
||||
<line fill="none" stroke="#000000" stroke-width="2" stroke-miterlimit="10" stroke-dasharray="4.0154,4.0154" x1="30.11" y1="77.396" x2="236.902" y2="77.396"/>
|
||||
<polyline fill="none" stroke="#000000" stroke-width="2" stroke-miterlimit="10" points="238.91,77.396 240.91,77.396
|
||||
238.97,77.881 "/>
|
||||
|
||||
<line fill="none" stroke="#000000" stroke-width="2" stroke-miterlimit="10" stroke-dasharray="3.9907,3.9907" x1="235.099" y1="78.85" x2="27.971" y2="130.631"/>
|
||||
<polyline fill="none" stroke="#000000" stroke-width="2" stroke-miterlimit="10" points="26.035,131.114 24.095,131.6
|
||||
26.095,131.6 "/>
|
||||
|
||||
<line fill="none" stroke="#000000" stroke-width="2" stroke-miterlimit="10" stroke-dasharray="4.0154,4.0154" x1="30.11" y1="131.6" x2="236.902" y2="131.6"/>
|
||||
<polyline fill="none" stroke="#000000" stroke-width="2" stroke-miterlimit="10" points="238.91,131.6 240.91,131.6
|
||||
238.97,132.085 "/>
|
||||
|
||||
<line fill="none" stroke="#000000" stroke-width="2" stroke-miterlimit="10" stroke-dasharray="3.9907,3.9907" x1="235.099" y1="133.053" x2="27.971" y2="184.835"/>
|
||||
<polyline fill="none" stroke="#000000" stroke-width="2" stroke-miterlimit="10" points="26.035,185.318 24.095,185.804
|
||||
26.095,185.804 "/>
|
||||
|
||||
<line fill="none" stroke="#000000" stroke-width="2" stroke-miterlimit="10" stroke-dasharray="4.0086,4.0086" x1="30.104" y1="185.804" x2="228.53" y2="185.804"/>
|
||||
|
||||
<line fill="none" stroke="#000000" stroke-width="2" stroke-miterlimit="10" x1="230.534" y1="185.804" x2="232.534" y2="185.804"/>
|
||||
<g>
|
||||
<rect x="24.095" y="19.892" width="6.602" height="6.602"/>
|
||||
</g>
|
||||
<g>
|
||||
<path d="M238.569,185.804c-2.84,1.054-6.363,2.852-8.548,4.756l1.721-4.756l-1.721-4.755
|
||||
C232.206,182.953,235.729,184.751,238.569,185.804z"/>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
<g id="graph0">
|
||||
<title>sorted_binary_tree</title>
|
||||
<g id="node1">
|
||||
<title>C</title>
|
||||
<ellipse fill="#FFFFFF" stroke="#000000" cx="60.23" cy="185.804" rx="18.067" ry="18.067"/>
|
||||
<text transform="matrix(1 0 0 1 55.5435 190.8223)" font-family="'Times-Roman'" font-size="14.0528">C</text>
|
||||
</g>
|
||||
<g id="node2">
|
||||
<title>E</title>
|
||||
<ellipse fill="#FFFFFF" stroke="#000000" cx="132.502" cy="185.804" rx="18.067" ry="18.067"/>
|
||||
<text transform="matrix(1 0 0 1 128.21 190.8223)" font-family="'Times-Roman'" font-size="14.0528">E</text>
|
||||
</g>
|
||||
<g id="node3">
|
||||
<title>H</title>
|
||||
<ellipse fill="#FFFFFF" stroke="#000000" cx="204.773" cy="185.804" rx="17.064" ry="18.067"/>
|
||||
<text transform="matrix(1 0 0 1 199.6992 190.8223)" font-family="'Times-Roman'" font-size="14.0528">H</text>
|
||||
</g>
|
||||
<g id="node4">
|
||||
<title>A</title>
|
||||
<ellipse fill="#FFFFFF" stroke="#000000" cx="24.094" cy="131.6" rx="17.064" ry="18.068"/>
|
||||
<text transform="matrix(1 0 0 1 19.02 136.6191)" font-family="'Times-Roman'" font-size="14.0528">A</text>
|
||||
</g>
|
||||
<g id="node5">
|
||||
<title>D</title>
|
||||
<ellipse fill="#FFFFFF" stroke="#000000" cx="96.366" cy="131.6" rx="17.064" ry="18.068"/>
|
||||
<text transform="matrix(1 0 0 1 91.292 136.6191)" font-family="'Times-Roman'" font-size="14.0528">D</text>
|
||||
</g>
|
||||
<g id="edge6">
|
||||
<title>D->C</title>
|
||||
<path fill="none" stroke="#000000" d="M86.328,147.66c-3.011,4.016-7.026,9.034-10.038,14.053"/>
|
||||
<polygon stroke="#000000" points="78.298,164.725 70.268,170.747 73.279,160.709 "/>
|
||||
</g>
|
||||
<g id="edge8">
|
||||
<title>D->E</title>
|
||||
<path fill="none" stroke="#000000" d="M106.404,147.66c3.011,4.016,7.026,9.034,10.038,14.053"/>
|
||||
<polygon stroke="#000000" points="119.453,160.709 122.464,170.747 114.434,164.725 "/>
|
||||
</g>
|
||||
<g id="node6">
|
||||
<title>I</title>
|
||||
<ellipse fill="#FFFFFF" stroke="#000000" cx="240.909" cy="131.6" rx="18.068" ry="18.068"/>
|
||||
<text transform="matrix(1 0 0 1 238.5693 136.6191)" font-family="'Times-Roman'" font-size="14.0528">I</text>
|
||||
</g>
|
||||
<g id="edge12">
|
||||
<title>I->H</title>
|
||||
<path fill="none" stroke="#000000" d="M230.871,146.656c-3.011,5.02-6.021,10.038-10.037,15.057"/>
|
||||
<polygon stroke="#000000" points="223.846,163.721 214.812,169.743 217.822,159.705 "/>
|
||||
</g>
|
||||
<g id="node7">
|
||||
<title>B</title>
|
||||
<ellipse fill="#FFFFFF" stroke="#000000" cx="60.23" cy="77.396" rx="18.068" ry="18.068"/>
|
||||
<text transform="matrix(1 0 0 1 55.5435 82.415)" font-family="'Times-Roman'" font-size="14.0528">B</text>
|
||||
</g>
|
||||
<g id="edge3">
|
||||
<title>B->A</title>
|
||||
<path fill="none" stroke="#000000" d="M50.192,92.453c-3.011,5.019-6.022,10.038-10.038,15.057"/>
|
||||
<polygon stroke="#000000" points="43.166,109.518 34.132,115.539 37.144,105.502 "/>
|
||||
</g>
|
||||
<g id="edge5">
|
||||
<title>B->D</title>
|
||||
<path fill="none" stroke="#000000" d="M70.268,92.453c3.011,5.019,6.022,10.038,10.038,15.057"/>
|
||||
<polygon stroke="#000000" points="83.317,105.502 86.328,115.539 77.294,109.518 "/>
|
||||
</g>
|
||||
<g id="node8">
|
||||
<title>G</title>
|
||||
<ellipse fill="#FFFFFF" stroke="#000000" cx="204.773" cy="77.396" rx="17.064" ry="18.068"/>
|
||||
<text transform="matrix(1 0 0 1 199.6992 82.415)" font-family="'Times-Roman'" font-size="14.0528">G</text>
|
||||
</g>
|
||||
<g id="edge11">
|
||||
<title>G->I</title>
|
||||
<path fill="none" stroke="#000000" d="M214.812,93.457c3.011,4.015,7.026,9.034,10.038,14.053"/>
|
||||
<polygon stroke="#000000" points="227.86,106.506 230.871,116.543 222.842,110.521 "/>
|
||||
</g>
|
||||
<g id="node9">
|
||||
<title>F</title>
|
||||
<ellipse fill="#FFFFFF" stroke="#000000" cx="132.502" cy="23.192" rx="18.068" ry="18.068"/>
|
||||
<text transform="matrix(1 0 0 1 128.5942 28.2109)" font-family="'Times-Roman'" font-size="14.0528">F</text>
|
||||
</g>
|
||||
<g id="edge2">
|
||||
<title>F->B</title>
|
||||
<path fill="none" stroke="#000000" d="M117.445,34.234c-11.042,8.03-23.087,17.064-34.128,26.098"/>
|
||||
<polygon stroke="#000000" points="85.325,63.343 75.287,66.354 81.31,57.321 "/>
|
||||
</g>
|
||||
<g id="edge10">
|
||||
<title>F->G</title>
|
||||
<path fill="none" stroke="#000000" d="M147.559,34.234c11.041,8.03,23.087,17.064,34.129,26.098"/>
|
||||
<polygon stroke="#000000" points="183.694,57.321 189.717,66.354 179.68,63.343 "/>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!--
|
||||
SPDX-License-Identifier: CC0-1.0
|
||||
SPDX-FileCopyrightText: Rory O'Kane at Wikimedia Commons
|
||||
<https://commons.wikimedia.org/wiki/File:Sorted_binary_tree_breadth-first_traversal.svg>
|
||||
SPDX-FileCopyrightText: 2024 Frank Dana
|
||||
-->
|
||||
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
|
||||
width="266px" height="212px" viewBox="0 0 266 212" enable-background="new 0 0 266 212" xml:space="preserve">
|
||||
<g>
|
||||
<g>
|
||||
<line fill="none" stroke="#1c76e4" stroke-width="2" stroke-miterlimit="10" x1="27.23" y1="23.192" x2="29.23" y2="23.192"/>
|
||||
|
||||
<line fill="none" stroke="#1c76e4" stroke-width="2" stroke-miterlimit="10" stroke-dasharray="3.9562,3.9562" x1="33.187" y1="23.192" x2="236.932" y2="23.192"/>
|
||||
<polyline fill="none" stroke="#1c76e4" stroke-width="2" stroke-miterlimit="10" points="238.91,23.192 240.91,23.192
|
||||
238.97,23.677 "/>
|
||||
|
||||
<line fill="none" stroke="#1c76e4" stroke-width="2" stroke-miterlimit="10" stroke-dasharray="3.9907,3.9907" x1="235.099" y1="24.646" x2="27.971" y2="76.427"/>
|
||||
<polyline fill="none" stroke="#1c76e4" stroke-width="2" stroke-miterlimit="10" points="26.035,76.912 24.095,77.396
|
||||
26.095,77.396 "/>
|
||||
|
||||
<line fill="none" stroke="#1c76e4" stroke-width="2" stroke-miterlimit="10" stroke-dasharray="4.0154,4.0154" x1="30.11" y1="77.396" x2="236.902" y2="77.396"/>
|
||||
<polyline fill="none" stroke="#1c76e4" stroke-width="2" stroke-miterlimit="10" points="238.91,77.396 240.91,77.396
|
||||
238.97,77.881 "/>
|
||||
|
||||
<line fill="none" stroke="#1c76e4" stroke-width="2" stroke-miterlimit="10" stroke-dasharray="3.9907,3.9907" x1="235.099" y1="78.85" x2="27.971" y2="130.631"/>
|
||||
<polyline fill="none" stroke="#1c76e4" stroke-width="2" stroke-miterlimit="10" points="26.035,131.114 24.095,131.6
|
||||
26.095,131.6 "/>
|
||||
|
||||
<line fill="none" stroke="#1c76e4" stroke-width="2" stroke-miterlimit="10" stroke-dasharray="4.0154,4.0154" x1="30.11" y1="131.6" x2="236.902" y2="131.6"/>
|
||||
<polyline fill="none" stroke="#1c76e4" stroke-width="2" stroke-miterlimit="10" points="238.91,131.6 240.91,131.6
|
||||
238.97,132.085 "/>
|
||||
|
||||
<line fill="none" stroke="#1c76e4" stroke-width="2" stroke-miterlimit="10" stroke-dasharray="3.9907,3.9907" x1="235.099" y1="133.053" x2="27.971" y2="184.835"/>
|
||||
<polyline fill="none" stroke="#1c76e4" stroke-width="2" stroke-miterlimit="10" points="26.035,185.318 24.095,185.804
|
||||
26.095,185.804 "/>
|
||||
|
||||
<line fill="none" stroke="#1c76e4" stroke-width="2" stroke-miterlimit="10" stroke-dasharray="4.0086,4.0086" x1="30.104" y1="185.804" x2="228.53" y2="185.804"/>
|
||||
|
||||
<line fill="none" stroke="#1c76e4" stroke-width="2" stroke-miterlimit="10" x1="230.534" y1="185.804" x2="232.534" y2="185.804"/>
|
||||
<g>
|
||||
<rect fill="#1c76e4" x="24.095" y="19.892" width="6.602" height="6.602"/>
|
||||
</g>
|
||||
<g>
|
||||
<path fill="#1c76e4" d="M238.569,185.804c-2.84,1.054-6.363,2.852-8.548,4.756l1.721-4.756l-1.721-4.755
|
||||
C232.206,182.953,235.729,184.751,238.569,185.804z"/>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
<g id="graph0">
|
||||
<title>sorted_binary_tree</title>
|
||||
<g id="node1">
|
||||
<title>C</title>
|
||||
<ellipse fill="#FFFFFF" stroke="#000000" cx="60.23" cy="185.804" rx="18.067" ry="18.067"/>
|
||||
<text transform="matrix(1 0 0 1 55.5435 190.8223)" font-family="'Times-Roman'" font-size="14.0528">C</text>
|
||||
</g>
|
||||
<g id="node2">
|
||||
<title>E</title>
|
||||
<ellipse fill="#FFFFFF" stroke="#000000" cx="132.502" cy="185.804" rx="18.067" ry="18.067"/>
|
||||
<text transform="matrix(1 0 0 1 128.21 190.8223)" font-family="'Times-Roman'" font-size="14.0528">E</text>
|
||||
</g>
|
||||
<g id="node3">
|
||||
<title>H</title>
|
||||
<ellipse fill="#FFFFFF" stroke="#000000" cx="204.773" cy="185.804" rx="17.064" ry="18.067"/>
|
||||
<text transform="matrix(1 0 0 1 199.6992 190.8223)" font-family="'Times-Roman'" font-size="14.0528">H</text>
|
||||
</g>
|
||||
<g id="node4">
|
||||
<title>A</title>
|
||||
<ellipse fill="#FFFFFF" stroke="#000000" cx="24.094" cy="131.6" rx="17.064" ry="18.068"/>
|
||||
<text transform="matrix(1 0 0 1 19.02 136.6191)" font-family="'Times-Roman'" font-size="14.0528">A</text>
|
||||
</g>
|
||||
<g id="node5">
|
||||
<title>D</title>
|
||||
<ellipse fill="#FFFFFF" stroke="#000000" cx="96.366" cy="131.6" rx="17.064" ry="18.068"/>
|
||||
<text transform="matrix(1 0 0 1 91.292 136.6191)" font-family="'Times-Roman'" font-size="14.0528">D</text>
|
||||
</g>
|
||||
<g id="edge6">
|
||||
<title>D->C</title>
|
||||
<path fill="none" stroke="#000000" d="M86.328,147.66c-3.011,4.016-7.026,9.034-10.038,14.053"/>
|
||||
<polygon stroke="#000000" points="78.298,164.725 70.268,170.747 73.279,160.709 "/>
|
||||
</g>
|
||||
<g id="edge8">
|
||||
<title>D->E</title>
|
||||
<path fill="none" stroke="#000000" d="M106.404,147.66c3.011,4.016,7.026,9.034,10.038,14.053"/>
|
||||
<polygon stroke="#000000" points="119.453,160.709 122.464,170.747 114.434,164.725 "/>
|
||||
</g>
|
||||
<g id="node6">
|
||||
<title>I</title>
|
||||
<ellipse fill="#FFFFFF" stroke="#000000" cx="240.909" cy="131.6" rx="18.068" ry="18.068"/>
|
||||
<text transform="matrix(1 0 0 1 238.5693 136.6191)" font-family="'Times-Roman'" font-size="14.0528">I</text>
|
||||
</g>
|
||||
<g id="edge12">
|
||||
<title>I->H</title>
|
||||
<path fill="none" stroke="#000000" d="M230.871,146.656c-3.011,5.02-6.021,10.038-10.037,15.057"/>
|
||||
<polygon stroke="#000000" points="223.846,163.721 214.812,169.743 217.822,159.705 "/>
|
||||
</g>
|
||||
<g id="node7">
|
||||
<title>B</title>
|
||||
<ellipse fill="#FFFFFF" stroke="#000000" cx="60.23" cy="77.396" rx="18.068" ry="18.068"/>
|
||||
<text transform="matrix(1 0 0 1 55.5435 82.415)" font-family="'Times-Roman'" font-size="14.0528">B</text>
|
||||
</g>
|
||||
<g id="edge3">
|
||||
<title>B->A</title>
|
||||
<path fill="none" stroke="#000000" d="M50.192,92.453c-3.011,5.019-6.022,10.038-10.038,15.057"/>
|
||||
<polygon stroke="#000000" points="43.166,109.518 34.132,115.539 37.144,105.502 "/>
|
||||
</g>
|
||||
<g id="edge5">
|
||||
<title>B->D</title>
|
||||
<path fill="none" stroke="#000000" d="M70.268,92.453c3.011,5.019,6.022,10.038,10.038,15.057"/>
|
||||
<polygon stroke="#000000" points="83.317,105.502 86.328,115.539 77.294,109.518 "/>
|
||||
</g>
|
||||
<g id="node8">
|
||||
<title>G</title>
|
||||
<ellipse fill="#FFFFFF" stroke="#000000" cx="204.773" cy="77.396" rx="17.064" ry="18.068"/>
|
||||
<text transform="matrix(1 0 0 1 199.6992 82.415)" font-family="'Times-Roman'" font-size="14.0528">G</text>
|
||||
</g>
|
||||
<g id="edge11">
|
||||
<title>G->I</title>
|
||||
<path fill="none" stroke="#000000" d="M214.812,93.457c3.011,4.015,7.026,9.034,10.038,14.053"/>
|
||||
<polygon stroke="#000000" points="227.86,106.506 230.871,116.543 222.842,110.521 "/>
|
||||
</g>
|
||||
<g id="node9">
|
||||
<title>F</title>
|
||||
<ellipse fill="#FFFFFF" stroke="#000000" cx="132.502" cy="23.192" rx="18.068" ry="18.068"/>
|
||||
<text transform="matrix(1 0 0 1 128.5942 28.2109)" font-family="'Times-Roman'" font-size="14.0528">F</text>
|
||||
</g>
|
||||
<g id="edge2">
|
||||
<title>F->B</title>
|
||||
<path fill="none" stroke="#000000" d="M117.445,34.234c-11.042,8.03-23.087,17.064-34.128,26.098"/>
|
||||
<polygon stroke="#000000" points="85.325,63.343 75.287,66.354 81.31,57.321 "/>
|
||||
</g>
|
||||
<g id="edge10">
|
||||
<title>F->G</title>
|
||||
<path fill="none" stroke="#000000" d="M147.559,34.234c11.041,8.03,23.087,17.064,34.129,26.098"/>
|
||||
<polygon stroke="#000000" points="183.694,57.321 189.717,66.354 179.68,63.343 "/>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 7.1 KiB After Width: | Height: | Size: 7.0 KiB |
758
docs/reference/glib/Sorted_binary_tree_inorder-dark.svg
Normal file
After Width: | Height: | Size: 36 KiB |
Before Width: | Height: | Size: 36 KiB After Width: | Height: | Size: 36 KiB |
755
docs/reference/glib/Sorted_binary_tree_postorder-dark.svg
Normal file
After Width: | Height: | Size: 36 KiB |
Before Width: | Height: | Size: 36 KiB After Width: | Height: | Size: 36 KiB |
755
docs/reference/glib/Sorted_binary_tree_preorder-dark.svg
Normal file
After Width: | Height: | Size: 36 KiB |
Before Width: | Height: | Size: 36 KiB After Width: | Height: | Size: 36 KiB |
@ -42,6 +42,9 @@ name = "basic"
|
||||
show_index_summary = true
|
||||
show_class_hierarchy = true
|
||||
|
||||
[source-location]
|
||||
base_url = "https://gitlab.gnome.org/GNOME/glib/-/blob/main/"
|
||||
|
||||
[extra]
|
||||
urlmap_file = "../urlmap.js"
|
||||
# The same order will be used when generating the index
|
||||
|
@ -42,6 +42,9 @@ name = "basic"
|
||||
show_index_summary = true
|
||||
show_class_hierarchy = true
|
||||
|
||||
[source-location]
|
||||
base_url = "https://gitlab.gnome.org/GNOME/glib/-/blob/main/"
|
||||
|
||||
[extra]
|
||||
urlmap_file = "../urlmap.js"
|
||||
# The same order will be used when generating the index
|
||||
|
@ -36,6 +36,9 @@ name = "basic"
|
||||
show_index_summary = true
|
||||
show_class_hierarchy = true
|
||||
|
||||
[source-location]
|
||||
base_url = "https://gitlab.gnome.org/GNOME/glib/-/blob/main/"
|
||||
|
||||
[extra]
|
||||
urlmap_file = "../urlmap.js"
|
||||
# The same order will be used when generating the index
|
||||
@ -96,6 +99,10 @@ content_images = [
|
||||
"Sorted_binary_tree_inorder.svg",
|
||||
"Sorted_binary_tree_postorder.svg",
|
||||
"Sorted_binary_tree_preorder.svg",
|
||||
"Sorted_binary_tree_breadth-first_traversal-dark.svg",
|
||||
"Sorted_binary_tree_inorder-dark.svg",
|
||||
"Sorted_binary_tree_postorder-dark.svg",
|
||||
"Sorted_binary_tree_preorder-dark.svg",
|
||||
]
|
||||
|
||||
[[object]]
|
||||
|
@ -38,6 +38,9 @@ name = "basic"
|
||||
show_index_summary = true
|
||||
show_class_hierarchy = true
|
||||
|
||||
[source-location]
|
||||
base_url = "https://gitlab.gnome.org/GNOME/glib/-/blob/main/"
|
||||
|
||||
[extra]
|
||||
urlmap_file = "../urlmap.js"
|
||||
# The same order will be used when generating the index
|
||||
|
@ -34,7 +34,7 @@
|
||||
/**
|
||||
* GActionGroupExporter:
|
||||
*
|
||||
* These functions support exporting a [class@Gio.ActionGroup] on D-Bus.
|
||||
* These functions support exporting a [iface@Gio.ActionGroup] on D-Bus.
|
||||
* The D-Bus interface that is used is a private implementation
|
||||
* detail.
|
||||
*
|
||||
@ -556,10 +556,9 @@ g_action_group_exporter_free (GActionGroupExporter *exporter)
|
||||
|
||||
/**
|
||||
* g_dbus_connection_export_action_group:
|
||||
* @connection: a #GDBusConnection
|
||||
* @connection: the D-Bus connection
|
||||
* @object_path: a D-Bus object path
|
||||
* @action_group: a #GActionGroup
|
||||
* @error: a pointer to a %NULL #GError, or %NULL
|
||||
* @action_group: an action group
|
||||
*
|
||||
* Exports @action_group on @connection at @object_path.
|
||||
*
|
||||
@ -571,7 +570,7 @@ g_action_group_exporter_free (GActionGroupExporter *exporter)
|
||||
* returned (with @error set accordingly).
|
||||
*
|
||||
* You can unexport the action group using
|
||||
* g_dbus_connection_unexport_action_group() with the return value of
|
||||
* [method@Gio.DBusConnection.unexport_action_group] with the return value of
|
||||
* this function.
|
||||
*
|
||||
* The thread default main context is taken at the time of this call.
|
||||
@ -641,15 +640,15 @@ g_dbus_connection_export_action_group (GDBusConnection *connection,
|
||||
|
||||
/**
|
||||
* g_dbus_connection_unexport_action_group:
|
||||
* @connection: a #GDBusConnection
|
||||
* @export_id: the ID from g_dbus_connection_export_action_group()
|
||||
* @connection: the D-Bus connection
|
||||
* @export_id: the ID from [method@Gio.DBusConnection.export_action_group]
|
||||
*
|
||||
* Reverses the effect of a previous call to
|
||||
* g_dbus_connection_export_action_group().
|
||||
* [method@Gio.DBusConnection.export_action_group].
|
||||
*
|
||||
* It is an error to call this function with an ID that wasn't returned
|
||||
* from g_dbus_connection_export_action_group() or to call it with the
|
||||
* same ID more than once.
|
||||
* It is an error to call this function with an ID that wasn’t returned from
|
||||
* [method@Gio.DBusConnection.export_action_group] or to call it with the same
|
||||
* ID more than once.
|
||||
*
|
||||
* Since: 2.32
|
||||
**/
|
||||
|
@ -37,7 +37,7 @@
|
||||
* One useful application of this interface is to map the
|
||||
* names of actions from various action groups to unique,
|
||||
* prefixed names (e.g. by prepending "app." or "win.").
|
||||
* This is the motivation for the 'Map' part of the interface
|
||||
* This is the motivation for the ‘Map’ part of the interface
|
||||
* name.
|
||||
*
|
||||
* Since: 2.32
|
||||
@ -45,11 +45,14 @@
|
||||
|
||||
/**
|
||||
* GActionMapInterface:
|
||||
* @lookup_action: the virtual function pointer for g_action_map_lookup_action()
|
||||
* @add_action: the virtual function pointer for g_action_map_add_action()
|
||||
* @remove_action: the virtual function pointer for g_action_map_remove_action()
|
||||
* @lookup_action: the virtual function pointer for
|
||||
* [method@Gio.ActionMap.lookup_action]
|
||||
* @add_action: the virtual function pointer for
|
||||
* [method@Gio.ActionMap.add_action]
|
||||
* @remove_action: the virtual function pointer for
|
||||
* [method@Gio.ActionMap.remove_action]
|
||||
*
|
||||
* The virtual function table for #GActionMap.
|
||||
* The virtual function table for [iface@Gio.ActionMap].
|
||||
*
|
||||
* Since: 2.32
|
||||
**/
|
||||
@ -63,14 +66,14 @@ g_action_map_default_init (GActionMapInterface *iface)
|
||||
|
||||
/**
|
||||
* g_action_map_lookup_action:
|
||||
* @action_map: a #GActionMap
|
||||
* @action_map: an action map
|
||||
* @action_name: the name of an action
|
||||
*
|
||||
* Looks up the action with the name @action_name in @action_map.
|
||||
*
|
||||
* If no such action exists, returns %NULL.
|
||||
* If no such action exists, returns `NULL`.
|
||||
*
|
||||
* Returns: (nullable) (transfer none): a #GAction, or %NULL
|
||||
* Returns: (nullable) (transfer none): a [iface@Gio.Action]
|
||||
*
|
||||
* Since: 2.32
|
||||
*/
|
||||
@ -84,8 +87,8 @@ g_action_map_lookup_action (GActionMap *action_map,
|
||||
|
||||
/**
|
||||
* g_action_map_add_action:
|
||||
* @action_map: a #GActionMap
|
||||
* @action: a #GAction
|
||||
* @action_map: an action map
|
||||
* @action: a [iface@Gio.Action]
|
||||
*
|
||||
* Adds an action to the @action_map.
|
||||
*
|
||||
@ -105,7 +108,7 @@ g_action_map_add_action (GActionMap *action_map,
|
||||
|
||||
/**
|
||||
* g_action_map_remove_action:
|
||||
* @action_map: a #GActionMap
|
||||
* @action_map: an action map
|
||||
* @action_name: the name of the action
|
||||
*
|
||||
* Removes the named action from the action map.
|
||||
@ -124,51 +127,49 @@ g_action_map_remove_action (GActionMap *action_map,
|
||||
/**
|
||||
* GActionEntry:
|
||||
* @name: the name of the action
|
||||
* @activate: the callback to connect to the "activate" signal of the
|
||||
* action. Since GLib 2.40, this can be %NULL for stateful
|
||||
* actions, in which case the default handler is used. For
|
||||
* boolean-stated actions with no parameter, this is a
|
||||
* toggle. For other state types (and parameter type equal
|
||||
* to the state type) this will be a function that
|
||||
* just calls @change_state (which you should provide).
|
||||
* @activate: the callback to connect to the "activate" signal of the action.
|
||||
* Since GLib 2.40, this can be `NULL` for stateful actions, in which case
|
||||
* the default handler is used. For boolean-stated actions with no
|
||||
* parameter, this is a toggle. For other state types (and parameter type
|
||||
* equal to the state type) this will be a function that just calls
|
||||
* @change_state (which you should provide).
|
||||
* @parameter_type: the type of the parameter that must be passed to the
|
||||
* activate function for this action, given as a single
|
||||
* GVariant type string (or %NULL for no parameter)
|
||||
* activate function for this action, given as a single GVariant type string
|
||||
* (or `NULL` for no parameter)
|
||||
* @state: the initial state for this action, given in
|
||||
* [GVariant text format](gvariant-text-format.html). The state is parsed
|
||||
* with no extra type information, so type tags must be added to
|
||||
* the string if they are necessary. Stateless actions should
|
||||
* give %NULL here.
|
||||
* @change_state: the callback to connect to the "change-state" signal
|
||||
* of the action. All stateful actions should provide a
|
||||
* handler here; stateless actions should not.
|
||||
* [GVariant text format](gvariant-text-format.html). The state is parsed
|
||||
* with no extra type information, so type tags must be added to the string
|
||||
* if they are necessary. Stateless actions should give `NULL` here.
|
||||
* @change_state: the callback to connect to the "change-state" signal of the
|
||||
* action. All stateful actions should provide a handler here; stateless
|
||||
* actions should not.
|
||||
*
|
||||
* This struct defines a single action. It is for use with
|
||||
* g_action_map_add_action_entries().
|
||||
* [method@Gio.ActionMap.add_action_entries].
|
||||
*
|
||||
* The order of the items in the structure are intended to reflect
|
||||
* frequency of use. It is permissible to use an incomplete initialiser
|
||||
* in order to leave some of the later values as %NULL. All values
|
||||
* in order to leave some of the later values as `NULL`. All values
|
||||
* after @name are optional. Additional optional fields may be added in
|
||||
* the future.
|
||||
*
|
||||
* See g_action_map_add_action_entries() for an example.
|
||||
* See [method@Gio.ActionMap.add_action_entries] for an example.
|
||||
**/
|
||||
|
||||
/**
|
||||
* g_action_map_add_action_entries:
|
||||
* @action_map: a #GActionMap
|
||||
* @action_map: an action map
|
||||
* @entries: (array length=n_entries) (element-type GActionEntry): a pointer to
|
||||
* the first item in an array of #GActionEntry structs
|
||||
* @n_entries: the length of @entries, or -1 if @entries is %NULL-terminated
|
||||
* the first item in an array of [struct@Gio.ActionEntry] structs
|
||||
* @n_entries: the length of @entries, or -1 if @entries is `NULL`-terminated
|
||||
* @user_data: the user data for signal connections
|
||||
*
|
||||
* A convenience function for creating multiple #GSimpleAction instances
|
||||
* and adding them to a #GActionMap.
|
||||
* A convenience function for creating multiple [class@Gio.SimpleAction]
|
||||
* instances and adding them to a [iface@Gio.ActionMap].
|
||||
*
|
||||
* Each action is constructed as per one #GActionEntry.
|
||||
* Each action is constructed as per one [struct@Gio.ActionEntry].
|
||||
*
|
||||
* |[<!-- language="C" -->
|
||||
* ```c
|
||||
* static void
|
||||
* activate_quit (GSimpleAction *simple,
|
||||
* GVariant *parameter,
|
||||
@ -199,7 +200,7 @@ g_action_map_remove_action (GActionMap *action_map,
|
||||
*
|
||||
* return G_ACTION_GROUP (group);
|
||||
* }
|
||||
* ]|
|
||||
* ```
|
||||
*
|
||||
* Since: 2.32
|
||||
*/
|
||||
@ -278,16 +279,16 @@ g_action_map_add_action_entries (GActionMap *action_map,
|
||||
|
||||
/**
|
||||
* g_action_map_remove_action_entries:
|
||||
* @action_map: The #GActionMap
|
||||
* @action_map: The [iface@Gio.ActionMap]
|
||||
* @entries: (array length=n_entries) (element-type GActionEntry): a pointer to
|
||||
* the first item in an array of #GActionEntry structs
|
||||
* @n_entries: the length of @entries, or -1 if @entries is %NULL-terminated
|
||||
* the first item in an array of [struct@Gio.ActionEntry] structs
|
||||
* @n_entries: the length of @entries, or -1 if @entries is `NULL`-terminated
|
||||
*
|
||||
* Remove actions from a #GActionMap. This is meant as the reverse of
|
||||
* g_action_map_add_action_entries().
|
||||
* Remove actions from a [iface@Gio.ActionMap]. This is meant as the reverse of
|
||||
* [method@Gio.ActionMap.add_action_entries].
|
||||
*
|
||||
*
|
||||
* |[<!-- language="C" -->
|
||||
* ```c
|
||||
* static const GActionEntry entries[] = {
|
||||
* { "quit", activate_quit },
|
||||
* { "print-string", activate_print_string, "s" }
|
||||
@ -304,7 +305,7 @@ g_action_map_add_action_entries (GActionMap *action_map,
|
||||
* {
|
||||
* g_action_map_remove_action_entries (map, entries, G_N_ELEMENTS (entries));
|
||||
* }
|
||||
* ]|
|
||||
* ```
|
||||
*
|
||||
* Since: 2.78
|
||||
*/
|
||||
|
392
gio/gappinfo.c
@ -56,15 +56,19 @@
|
||||
* As of GLib 2.20, URIs will always be converted to POSIX paths
|
||||
* (using [method@Gio.File.get_path]) when using [method@Gio.AppInfo.launch]
|
||||
* even if the application requested an URI and not a POSIX path. For example
|
||||
* for a desktop-file based application with Exec key `totem
|
||||
* %U` and a single URI, `sftp://foo/file.avi`, then
|
||||
* `/home/user/.gvfs/sftp on foo/file.avi` will be passed. This will
|
||||
* only work if a set of suitable GIO extensions (such as GVfs 2.26
|
||||
* compiled with FUSE support), is available and operational; if this
|
||||
* is not the case, the URI will be passed unmodified to the application.
|
||||
* Some URIs, such as `mailto:`, of course cannot be mapped to a POSIX
|
||||
* path (in GVfs there's no FUSE mount for it); such URIs will be
|
||||
* passed unmodified to the application.
|
||||
* for a desktop-file based application with the following Exec key:
|
||||
*
|
||||
* ```
|
||||
* Exec=totem %U
|
||||
* ```
|
||||
*
|
||||
* and a single URI, `sftp://foo/file.avi`, then
|
||||
* `/home/user/.gvfs/sftp on foo/file.avi` will be passed. This will only work
|
||||
* if a set of suitable GIO extensions (such as GVfs 2.26 compiled with FUSE
|
||||
* support), is available and operational; if this is not the case, the URI
|
||||
* will be passed unmodified to the application. Some URIs, such as `mailto:`,
|
||||
* of course cannot be mapped to a POSIX path (in GVfs there’s no FUSE mount
|
||||
* for it); such URIs will be passed unmodified to the application.
|
||||
*
|
||||
* Specifically for GVfs 2.26 and later, the POSIX URI will be mapped
|
||||
* back to the GIO URI in the [iface@Gio.File] constructors (since GVfs
|
||||
@ -94,7 +98,7 @@
|
||||
*
|
||||
* This code will work when both `cdda://sr0/Track 1.wav` and
|
||||
* `/home/user/.gvfs/cdda on sr0/Track 1.wav` is passed to the
|
||||
* application. It should be noted that it's generally not safe
|
||||
* application. It should be noted that it’s generally not safe
|
||||
* for applications to rely on the format of a particular URIs.
|
||||
* Different launcher applications (e.g. file managers) may have
|
||||
* different ideas of what a given URI means.
|
||||
@ -115,9 +119,9 @@ g_app_info_default_init (GAppInfoInterface *iface)
|
||||
|
||||
/**
|
||||
* g_app_info_dup:
|
||||
* @appinfo: a #GAppInfo.
|
||||
* @appinfo: the app info
|
||||
*
|
||||
* Creates a duplicate of a #GAppInfo.
|
||||
* Creates a duplicate of a [iface@Gio.AppInfo].
|
||||
*
|
||||
* Returns: (transfer full): a duplicate of @appinfo.
|
||||
**/
|
||||
@ -135,16 +139,16 @@ g_app_info_dup (GAppInfo *appinfo)
|
||||
|
||||
/**
|
||||
* g_app_info_equal:
|
||||
* @appinfo1: the first #GAppInfo.
|
||||
* @appinfo2: the second #GAppInfo.
|
||||
* @appinfo1: the first [iface@Gio.AppInfo].
|
||||
* @appinfo2: the second [iface@Gio.AppInfo].
|
||||
*
|
||||
* Checks if two #GAppInfos are equal.
|
||||
* Checks if two [iface@Gio.AppInfo]s are equal.
|
||||
*
|
||||
* Note that the check *may not* compare each individual
|
||||
* field, and only does an identity check. In case detecting changes in the
|
||||
* contents is needed, program code must additionally compare relevant fields.
|
||||
* Note that the check *may not* compare each individual field, and only does
|
||||
* an identity check. In case detecting changes in the contents is needed,
|
||||
* program code must additionally compare relevant fields.
|
||||
*
|
||||
* Returns: %TRUE if @appinfo1 is equal to @appinfo2. %FALSE otherwise.
|
||||
* Returns: `TRUE` if @appinfo1 is equal to @appinfo2. `FALSE` otherwise.
|
||||
**/
|
||||
gboolean
|
||||
g_app_info_equal (GAppInfo *appinfo1,
|
||||
@ -165,17 +169,16 @@ g_app_info_equal (GAppInfo *appinfo1,
|
||||
|
||||
/**
|
||||
* g_app_info_get_id:
|
||||
* @appinfo: a #GAppInfo.
|
||||
* @appinfo: the app info
|
||||
*
|
||||
* Gets the ID of an application. An id is a string that
|
||||
* identifies the application. The exact format of the id is
|
||||
* platform dependent. For instance, on Unix this is the
|
||||
* desktop file id from the xdg menu specification.
|
||||
* Gets the ID of an application. An id is a string that identifies the
|
||||
* application. The exact format of the id is platform dependent. For instance,
|
||||
* on Unix this is the desktop file id from the xdg menu specification.
|
||||
*
|
||||
* Note that the returned ID may be %NULL, depending on how
|
||||
* the @appinfo has been constructed.
|
||||
* Note that the returned ID may be `NULL`, depending on how the @appinfo has
|
||||
* been constructed.
|
||||
*
|
||||
* Returns: (nullable): a string containing the application's ID.
|
||||
* Returns: (nullable): a string containing the application’s ID.
|
||||
**/
|
||||
const char *
|
||||
g_app_info_get_id (GAppInfo *appinfo)
|
||||
@ -191,7 +194,7 @@ g_app_info_get_id (GAppInfo *appinfo)
|
||||
|
||||
/**
|
||||
* g_app_info_get_name:
|
||||
* @appinfo: a #GAppInfo.
|
||||
* @appinfo: the app info
|
||||
*
|
||||
* Gets the installed name of the application.
|
||||
*
|
||||
@ -211,7 +214,7 @@ g_app_info_get_name (GAppInfo *appinfo)
|
||||
|
||||
/**
|
||||
* g_app_info_get_display_name:
|
||||
* @appinfo: a #GAppInfo.
|
||||
* @appinfo: the app info
|
||||
*
|
||||
* Gets the display name of the application. The display name is often more
|
||||
* descriptive to the user than the name itself.
|
||||
@ -238,12 +241,12 @@ g_app_info_get_display_name (GAppInfo *appinfo)
|
||||
|
||||
/**
|
||||
* g_app_info_get_description:
|
||||
* @appinfo: a #GAppInfo.
|
||||
* @appinfo: the app info
|
||||
*
|
||||
* Gets a human-readable description of an installed application.
|
||||
*
|
||||
* Returns: (nullable): a string containing a description of the
|
||||
* application @appinfo, or %NULL if none.
|
||||
* application @appinfo, or `NULL` if none.
|
||||
**/
|
||||
const char *
|
||||
g_app_info_get_description (GAppInfo *appinfo)
|
||||
@ -259,15 +262,15 @@ g_app_info_get_description (GAppInfo *appinfo)
|
||||
|
||||
/**
|
||||
* g_app_info_get_executable: (virtual get_executable)
|
||||
* @appinfo: a #GAppInfo
|
||||
* @appinfo: the app info
|
||||
*
|
||||
* Gets the executable's name for the installed application.
|
||||
* Gets the executable’s name for the installed application.
|
||||
*
|
||||
* This is intended to be used for debugging or labelling what program is going
|
||||
* to be run. To launch the executable, use g_app_info_launch() and related
|
||||
* to be run. To launch the executable, use [method@Gio.AppInfo.launch] and related
|
||||
* functions, rather than spawning the return value from this function.
|
||||
*
|
||||
* Returns: (type filename): a string containing the @appinfo's application
|
||||
* Returns: (type filename): a string containing the @appinfo’s application
|
||||
* binaries name
|
||||
**/
|
||||
const char *
|
||||
@ -285,13 +288,13 @@ g_app_info_get_executable (GAppInfo *appinfo)
|
||||
|
||||
/**
|
||||
* g_app_info_get_commandline: (virtual get_commandline)
|
||||
* @appinfo: a #GAppInfo
|
||||
* @appinfo: the app info
|
||||
*
|
||||
* Gets the commandline with which the application will be
|
||||
* started.
|
||||
*
|
||||
* Returns: (nullable) (type filename): a string containing the @appinfo's commandline,
|
||||
* or %NULL if this information is not available
|
||||
* Returns: (nullable) (type filename): a string containing the @appinfo’s
|
||||
* commandline, or `NULL` if this information is not available
|
||||
*
|
||||
* Since: 2.20
|
||||
**/
|
||||
@ -312,13 +315,12 @@ g_app_info_get_commandline (GAppInfo *appinfo)
|
||||
|
||||
/**
|
||||
* g_app_info_set_as_default_for_type:
|
||||
* @appinfo: a #GAppInfo.
|
||||
* @appinfo: the app info
|
||||
* @content_type: the content type.
|
||||
* @error: a #GError.
|
||||
*
|
||||
* Sets the application as the default handler for a given type.
|
||||
*
|
||||
* Returns: %TRUE on success, %FALSE on error.
|
||||
* Returns: `TRUE` on success, `FALSE` on error.
|
||||
**/
|
||||
gboolean
|
||||
g_app_info_set_as_default_for_type (GAppInfo *appinfo,
|
||||
@ -342,16 +344,15 @@ g_app_info_set_as_default_for_type (GAppInfo *appinfo,
|
||||
|
||||
/**
|
||||
* g_app_info_set_as_last_used_for_type:
|
||||
* @appinfo: a #GAppInfo.
|
||||
* @appinfo: the app info
|
||||
* @content_type: the content type.
|
||||
* @error: a #GError.
|
||||
*
|
||||
* Sets the application as the last used application for a given type.
|
||||
* This will make the application appear as first in the list returned
|
||||
* by g_app_info_get_recommended_for_type(), regardless of the default
|
||||
* Sets the application as the last used application for a given type. This
|
||||
* will make the application appear as first in the list returned by
|
||||
* [func@Gio.AppInfo.get_recommended_for_type], regardless of the default
|
||||
* application for that content type.
|
||||
*
|
||||
* Returns: %TRUE on success, %FALSE on error.
|
||||
* Returns: `TRUE` on success, `FALSE` on error.
|
||||
**/
|
||||
gboolean
|
||||
g_app_info_set_as_last_used_for_type (GAppInfo *appinfo,
|
||||
@ -375,14 +376,13 @@ g_app_info_set_as_last_used_for_type (GAppInfo *appinfo,
|
||||
|
||||
/**
|
||||
* g_app_info_set_as_default_for_extension:
|
||||
* @appinfo: a #GAppInfo.
|
||||
* @extension: (type filename): a string containing the file extension
|
||||
* (without the dot).
|
||||
* @error: a #GError.
|
||||
* @appinfo: the app info
|
||||
* @extension: (type filename): a string containing the file extension (without
|
||||
* the dot).
|
||||
*
|
||||
* Sets the application as the default handler for the given file extension.
|
||||
*
|
||||
* Returns: %TRUE on success, %FALSE on error.
|
||||
* Returns: `TRUE` on success, `FALSE` on error.
|
||||
**/
|
||||
gboolean
|
||||
g_app_info_set_as_default_for_extension (GAppInfo *appinfo,
|
||||
@ -407,14 +407,13 @@ g_app_info_set_as_default_for_extension (GAppInfo *appinfo,
|
||||
|
||||
/**
|
||||
* g_app_info_add_supports_type:
|
||||
* @appinfo: a #GAppInfo.
|
||||
* @appinfo: the app info
|
||||
* @content_type: a string.
|
||||
* @error: a #GError.
|
||||
*
|
||||
* Adds a content type to the application information to indicate the
|
||||
* application is capable of opening files with the given content type.
|
||||
*
|
||||
* Returns: %TRUE on success, %FALSE on error.
|
||||
* Returns: `TRUE` on success, `FALSE` on error.
|
||||
**/
|
||||
gboolean
|
||||
g_app_info_add_supports_type (GAppInfo *appinfo,
|
||||
@ -441,12 +440,12 @@ g_app_info_add_supports_type (GAppInfo *appinfo,
|
||||
|
||||
/**
|
||||
* g_app_info_can_remove_supports_type:
|
||||
* @appinfo: a #GAppInfo.
|
||||
* @appinfo: the app info
|
||||
*
|
||||
* Checks if a supported content type can be removed from an application.
|
||||
*
|
||||
* Returns: %TRUE if it is possible to remove supported
|
||||
* content types from a given @appinfo, %FALSE if not.
|
||||
* Returns: `TRUE` if it is possible to remove supported content types from a
|
||||
* given @appinfo, `FALSE` if not.
|
||||
**/
|
||||
gboolean
|
||||
g_app_info_can_remove_supports_type (GAppInfo *appinfo)
|
||||
@ -466,13 +465,12 @@ g_app_info_can_remove_supports_type (GAppInfo *appinfo)
|
||||
|
||||
/**
|
||||
* g_app_info_remove_supports_type:
|
||||
* @appinfo: a #GAppInfo.
|
||||
* @appinfo: the app info
|
||||
* @content_type: a string.
|
||||
* @error: a #GError.
|
||||
*
|
||||
* Removes a supported type from an application, if possible.
|
||||
*
|
||||
* Returns: %TRUE on success, %FALSE on error.
|
||||
* Returns: `TRUE` on success, `FALSE` on error.
|
||||
**/
|
||||
gboolean
|
||||
g_app_info_remove_supports_type (GAppInfo *appinfo,
|
||||
@ -498,17 +496,18 @@ g_app_info_remove_supports_type (GAppInfo *appinfo,
|
||||
|
||||
/**
|
||||
* g_app_info_get_supported_types:
|
||||
* @appinfo: a #GAppInfo that can handle files
|
||||
* @appinfo: an app info that can handle files
|
||||
*
|
||||
* Retrieves the list of content types that @app_info claims to support.
|
||||
* If this information is not provided by the environment, this function
|
||||
* will return %NULL.
|
||||
* will return `NULL`.
|
||||
*
|
||||
* This function does not take in consideration associations added with
|
||||
* g_app_info_add_supports_type(), but only those exported directly by
|
||||
* [method@Gio.AppInfo.add_supports_type], but only those exported directly by
|
||||
* the application.
|
||||
*
|
||||
* Returns: (transfer none) (array zero-terminated=1) (element-type utf8):
|
||||
* a list of content types.
|
||||
* a list of content types.
|
||||
*
|
||||
* Since: 2.34
|
||||
*/
|
||||
@ -530,12 +529,12 @@ g_app_info_get_supported_types (GAppInfo *appinfo)
|
||||
|
||||
/**
|
||||
* g_app_info_get_icon:
|
||||
* @appinfo: a #GAppInfo.
|
||||
* @appinfo: the app info
|
||||
*
|
||||
* Gets the icon for the application.
|
||||
*
|
||||
* Returns: (nullable) (transfer none): the default #GIcon for @appinfo or %NULL
|
||||
* if there is no default icon.
|
||||
* Returns: (nullable) (transfer none): the default [iface@Gio.Icon] for
|
||||
* @appinfo or `NULL` if there is no default icon.
|
||||
**/
|
||||
GIcon *
|
||||
g_app_info_get_icon (GAppInfo *appinfo)
|
||||
@ -552,17 +551,16 @@ g_app_info_get_icon (GAppInfo *appinfo)
|
||||
|
||||
/**
|
||||
* g_app_info_launch:
|
||||
* @appinfo: a #GAppInfo
|
||||
* @files: (nullable) (element-type GFile): a #GList of #GFile objects
|
||||
* @context: (nullable): a #GAppLaunchContext or %NULL
|
||||
* @error: a #GError
|
||||
* @appinfo: the app info
|
||||
* @files: (nullable) (element-type GFile): a list of [iface@Gio.File] objects
|
||||
* @context: (nullable): the launch context
|
||||
*
|
||||
* Launches the application. Passes @files to the launched application
|
||||
* as arguments, using the optional @context to get information
|
||||
* about the details of the launcher (like what screen it is on).
|
||||
* On error, @error will be set accordingly.
|
||||
*
|
||||
* To launch the application without arguments pass a %NULL @files list.
|
||||
* To launch the application without arguments pass a `NULL` @files list.
|
||||
*
|
||||
* Note that even if the launch is successful the application launched
|
||||
* can fail to start if it runs into problems during startup. There is
|
||||
@ -571,11 +569,11 @@ g_app_info_get_icon (GAppInfo *appinfo)
|
||||
* Some URIs can be changed when passed through a GFile (for instance
|
||||
* unsupported URIs with strange formats like mailto:), so if you have
|
||||
* a textual URI you want to pass in as argument, consider using
|
||||
* g_app_info_launch_uris() instead.
|
||||
* [method@Gio.AppInfo.launch_uris] instead.
|
||||
*
|
||||
* The launched application inherits the environment of the launching
|
||||
* process, but it can be modified with g_app_launch_context_setenv()
|
||||
* and g_app_launch_context_unsetenv().
|
||||
* process, but it can be modified with [method@Gio.AppLaunchContext.setenv]
|
||||
* and [method@Gio.AppLaunchContext.unsetenv].
|
||||
*
|
||||
* On UNIX, this function sets the `GIO_LAUNCHED_DESKTOP_FILE`
|
||||
* environment variable with the path of the launched desktop file and
|
||||
@ -585,7 +583,7 @@ g_app_info_get_icon (GAppInfo *appinfo)
|
||||
* `XDG_ACTIVATION_TOKEN` and `DESKTOP_STARTUP_ID` environment
|
||||
* variables are also set, based on information provided in @context.
|
||||
*
|
||||
* Returns: %TRUE on successful launch, %FALSE otherwise.
|
||||
* Returns: `TRUE` on successful launch, `FALSE` otherwise.
|
||||
**/
|
||||
gboolean
|
||||
g_app_info_launch (GAppInfo *appinfo,
|
||||
@ -605,11 +603,11 @@ g_app_info_launch (GAppInfo *appinfo,
|
||||
|
||||
/**
|
||||
* g_app_info_supports_uris:
|
||||
* @appinfo: a #GAppInfo.
|
||||
* @appinfo: the app info
|
||||
*
|
||||
* Checks if the application supports reading files and directories from URIs.
|
||||
*
|
||||
* Returns: %TRUE if the @appinfo supports URIs.
|
||||
* Returns: `TRUE` if the @appinfo supports URIs.
|
||||
**/
|
||||
gboolean
|
||||
g_app_info_supports_uris (GAppInfo *appinfo)
|
||||
@ -626,11 +624,11 @@ g_app_info_supports_uris (GAppInfo *appinfo)
|
||||
|
||||
/**
|
||||
* g_app_info_supports_files:
|
||||
* @appinfo: a #GAppInfo.
|
||||
* @appinfo: the app info
|
||||
*
|
||||
* Checks if the application accepts files as arguments.
|
||||
*
|
||||
* Returns: %TRUE if the @appinfo supports files.
|
||||
* Returns: `TRUE` if the @appinfo supports files.
|
||||
**/
|
||||
gboolean
|
||||
g_app_info_supports_files (GAppInfo *appinfo)
|
||||
@ -647,10 +645,9 @@ g_app_info_supports_files (GAppInfo *appinfo)
|
||||
|
||||
/**
|
||||
* g_app_info_launch_uris:
|
||||
* @appinfo: a #GAppInfo
|
||||
* @uris: (nullable) (element-type utf8): a #GList containing URIs to launch.
|
||||
* @context: (nullable): a #GAppLaunchContext or %NULL
|
||||
* @error: a #GError
|
||||
* @appinfo: the app info
|
||||
* @uris: (nullable) (element-type utf8): a list of URIs to launch.
|
||||
* @context: (nullable): the launch context
|
||||
*
|
||||
* Launches the application. This passes the @uris to the launched application
|
||||
* as arguments, using the optional @context to get information
|
||||
@ -659,13 +656,13 @@ g_app_info_supports_files (GAppInfo *appinfo)
|
||||
* one URI per invocation as part of their command-line, multiple instances
|
||||
* of the application will be spawned.
|
||||
*
|
||||
* To launch the application without arguments pass a %NULL @uris list.
|
||||
* To launch the application without arguments pass a `NULL` @uris list.
|
||||
*
|
||||
* Note that even if the launch is successful the application launched
|
||||
* can fail to start if it runs into problems during startup. There is
|
||||
* no way to detect this.
|
||||
*
|
||||
* Returns: %TRUE on successful launch, %FALSE otherwise.
|
||||
* Returns: `TRUE` on successful launch, `FALSE` otherwise.
|
||||
**/
|
||||
gboolean
|
||||
g_app_info_launch_uris (GAppInfo *appinfo,
|
||||
@ -684,19 +681,20 @@ g_app_info_launch_uris (GAppInfo *appinfo,
|
||||
|
||||
/**
|
||||
* g_app_info_launch_uris_async:
|
||||
* @appinfo: a #GAppInfo
|
||||
* @uris: (nullable) (element-type utf8): a #GList containing URIs to launch.
|
||||
* @context: (nullable): a #GAppLaunchContext or %NULL
|
||||
* @cancellable: (nullable): a #GCancellable
|
||||
* @callback: (nullable): a #GAsyncReadyCallback to call when the request is done
|
||||
* @appinfo: the app info
|
||||
* @uris: (nullable) (element-type utf8): a list of URIs to launch.
|
||||
* @context: (nullable): the launch context
|
||||
* @cancellable: (nullable): a [class@Gio.Cancellable]
|
||||
* @callback: (scope async) (nullable): a [type@Gio.AsyncReadyCallback] to call
|
||||
* when the request is done
|
||||
* @user_data: (nullable): data to pass to @callback
|
||||
*
|
||||
* Async version of g_app_info_launch_uris().
|
||||
* Async version of [method@Gio.AppInfo.launch_uris].
|
||||
*
|
||||
* The @callback is invoked immediately after the application launch, but it
|
||||
* waits for activation in case of D-Bus–activated applications and also provides
|
||||
* extended error information for sandboxed applications, see notes for
|
||||
* g_app_info_launch_default_for_uri_async().
|
||||
* [func@Gio.AppInfo.launch_default_for_uri_async].
|
||||
*
|
||||
* Since: 2.60
|
||||
**/
|
||||
@ -733,13 +731,12 @@ g_app_info_launch_uris_async (GAppInfo *appinfo,
|
||||
|
||||
/**
|
||||
* g_app_info_launch_uris_finish:
|
||||
* @appinfo: a #GAppInfo
|
||||
* @result: a #GAsyncResult
|
||||
* @error: (nullable): a #GError
|
||||
* @appinfo: the app info
|
||||
* @result: the async result
|
||||
*
|
||||
* Finishes a g_app_info_launch_uris_async() operation.
|
||||
* Finishes a [method@Gio.AppInfo.launch_uris_async] operation.
|
||||
*
|
||||
* Returns: %TRUE on successful launch, %FALSE otherwise.
|
||||
* Returns: `TRUE` on successful launch, `FALSE` otherwise.
|
||||
*
|
||||
* Since: 2.60
|
||||
*/
|
||||
@ -765,12 +762,12 @@ g_app_info_launch_uris_finish (GAppInfo *appinfo,
|
||||
|
||||
/**
|
||||
* g_app_info_should_show:
|
||||
* @appinfo: a #GAppInfo.
|
||||
* @appinfo: the app info
|
||||
*
|
||||
* Checks if the application info should be shown in menus that
|
||||
* list available applications.
|
||||
*
|
||||
* Returns: %TRUE if the @appinfo should be shown, %FALSE otherwise.
|
||||
* Returns: `TRUE` if the @appinfo should be shown, `FALSE` otherwise.
|
||||
**/
|
||||
gboolean
|
||||
g_app_info_should_show (GAppInfo *appinfo)
|
||||
@ -821,14 +818,16 @@ get_default_for_type_thread (GTask *task,
|
||||
|
||||
/**
|
||||
* g_app_info_get_default_for_type_async:
|
||||
* @content_type: the content type to find a #GAppInfo for
|
||||
* @must_support_uris: if %TRUE, the #GAppInfo is expected to
|
||||
* support URIs
|
||||
* @cancellable: optional #GCancellable object, %NULL to ignore
|
||||
* @callback: (nullable): a #GAsyncReadyCallback to call when the request is done
|
||||
* @content_type: the content type to find a [iface@Gio.AppInfo] for
|
||||
* @must_support_uris: if `TRUE`, the [iface@Gio.AppInfo] is expected to
|
||||
* support URIs
|
||||
* @cancellable: (nullable): a [class@Gio.Cancellable]
|
||||
* @callback: (scope async) (nullable): a [type@Gio.AsyncReadyCallback] to call
|
||||
* when the request is done
|
||||
* @user_data: (nullable): data to pass to @callback
|
||||
*
|
||||
* Asynchronously gets the default #GAppInfo for a given content type.
|
||||
* Asynchronously gets the default [iface@Gio.AppInfo] for a given content
|
||||
* type.
|
||||
*
|
||||
* Since: 2.74
|
||||
*/
|
||||
@ -882,14 +881,15 @@ get_default_for_scheme_thread (GTask *task,
|
||||
/**
|
||||
* g_app_info_get_default_for_uri_scheme_async:
|
||||
* @uri_scheme: a string containing a URI scheme.
|
||||
* @cancellable: optional #GCancellable object, %NULL to ignore
|
||||
* @callback: (nullable): a #GAsyncReadyCallback to call when the request is done
|
||||
* @cancellable: (nullable): a [class@Gio.Cancellable]
|
||||
* @callback: (scope async) (nullable): a [type@Gio.AsyncReadyCallback] to call
|
||||
* when the request is done
|
||||
* @user_data: (nullable): data to pass to @callback
|
||||
*
|
||||
* Asynchronously gets the default application for handling URIs with
|
||||
* the given URI scheme. A URI scheme is the initial part
|
||||
* of the URI, up to but not including the ':', e.g. "http",
|
||||
* "ftp" or "sip".
|
||||
* of the URI, up to but not including the `:`, e.g. `http`,
|
||||
* `ftp` or `sip`.
|
||||
*
|
||||
* Since: 2.74
|
||||
*/
|
||||
@ -914,16 +914,16 @@ g_app_info_get_default_for_uri_scheme_async (const char *uri_scheme,
|
||||
|
||||
/**
|
||||
* g_app_info_get_default_for_uri_scheme_finish:
|
||||
* @result: a #GAsyncResult
|
||||
* @error: (nullable): a #GError
|
||||
* @result: the async result
|
||||
*
|
||||
* Finishes a default #GAppInfo lookup started by
|
||||
* g_app_info_get_default_for_uri_scheme_async().
|
||||
* Finishes a default [iface@Gio.AppInfo] lookup started by
|
||||
* [func@Gio.AppInfo.get_default_for_uri_scheme_async].
|
||||
*
|
||||
* If no #GAppInfo is found, then @error will be set to %G_IO_ERROR_NOT_FOUND.
|
||||
* If no [iface@Gio.AppInfo] is found, then @error will be set to
|
||||
* [error@Gio.IOErrorEnum.NOT_FOUND].
|
||||
*
|
||||
* Returns: (transfer full): #GAppInfo for given @uri_scheme or
|
||||
* %NULL on error.
|
||||
* Returns: (transfer full): [iface@Gio.AppInfo] for given @uri_scheme or
|
||||
* `NULL` on error.
|
||||
*
|
||||
* Since: 2.74
|
||||
*/
|
||||
@ -941,16 +941,16 @@ g_app_info_get_default_for_uri_scheme_finish (GAsyncResult *result,
|
||||
|
||||
/**
|
||||
* g_app_info_get_default_for_type_finish:
|
||||
* @result: a #GAsyncResult
|
||||
* @error: (nullable): a #GError
|
||||
* @result: the async result
|
||||
*
|
||||
* Finishes a default #GAppInfo lookup started by
|
||||
* g_app_info_get_default_for_type_async().
|
||||
* Finishes a default [iface@Gio.AppInfo] lookup started by
|
||||
* [func@Gio.AppInfo.get_default_for_type_async].
|
||||
*
|
||||
* If no #GAppInfo is found, then @error will be set to %G_IO_ERROR_NOT_FOUND.
|
||||
* If no #[iface@Gio.AppInfo] is found, then @error will be set to
|
||||
* [error@Gio.IOErrorEnum.NOT_FOUND].
|
||||
*
|
||||
* Returns: (transfer full): #GAppInfo for given @content_type or
|
||||
* %NULL on error.
|
||||
* Returns: (transfer full): [iface@Gio.AppInfo] for given @content_type or
|
||||
* `NULL` on error.
|
||||
*
|
||||
* Since: 2.74
|
||||
*/
|
||||
@ -969,19 +969,17 @@ g_app_info_get_default_for_type_finish (GAsyncResult *result,
|
||||
/**
|
||||
* g_app_info_launch_default_for_uri:
|
||||
* @uri: the uri to show
|
||||
* @context: (nullable): an optional #GAppLaunchContext
|
||||
* @error: (nullable): return location for an error, or %NULL
|
||||
* @context: (nullable): optional launch context
|
||||
*
|
||||
* Utility function that launches the default application
|
||||
* registered to handle the specified uri. Synchronous I/O
|
||||
* is done on the uri to detect the type of the file if
|
||||
* required.
|
||||
* Utility function that launches the default application registered to handle
|
||||
* the specified uri. Synchronous I/O is done on the uri to detect the type of
|
||||
* the file if required.
|
||||
*
|
||||
* The D-Bus–activated applications don't have to be started if your application
|
||||
* The D-Bus–activated applications don’t have to be started if your application
|
||||
* terminates too soon after this function. To prevent this, use
|
||||
* g_app_info_launch_default_for_uri_async() instead.
|
||||
* [func@Gio.AppInfo.launch_default_for_uri_async] instead.
|
||||
*
|
||||
* Returns: %TRUE on success, %FALSE on error.
|
||||
* Returns: `TRUE` on success, `FALSE` on error.
|
||||
**/
|
||||
gboolean
|
||||
g_app_info_launch_default_for_uri (const char *uri,
|
||||
@ -1197,17 +1195,17 @@ launch_default_app_for_uri_cb (GObject *object,
|
||||
/**
|
||||
* g_app_info_launch_default_for_uri_async:
|
||||
* @uri: the uri to show
|
||||
* @context: (nullable): an optional #GAppLaunchContext
|
||||
* @cancellable: (nullable): a #GCancellable
|
||||
* @callback: (nullable): a #GAsyncReadyCallback to call when the request is done
|
||||
* @context: (nullable): optional launch context
|
||||
* @cancellable: (nullable): a [class@Gio.Cancellable]
|
||||
* @callback: (scope async) (nullable): a [type@Gio.AsyncReadyCallback] to call
|
||||
* when the request is done
|
||||
* @user_data: (nullable): data to pass to @callback
|
||||
*
|
||||
* Async version of g_app_info_launch_default_for_uri().
|
||||
* Async version of [func@Gio.AppInfo.launch_default_for_uri].
|
||||
*
|
||||
* This version is useful if you are interested in receiving
|
||||
* error information in the case where the application is
|
||||
* sandboxed and the portal may present an application chooser
|
||||
* dialog to the user.
|
||||
* This version is useful if you are interested in receiving error information
|
||||
* in the case where the application is sandboxed and the portal may present an
|
||||
* application chooser dialog to the user.
|
||||
*
|
||||
* This is also useful if you want to be sure that the D-Bus–activated
|
||||
* applications are really started before termination and if you are interested
|
||||
@ -1258,12 +1256,11 @@ g_app_info_launch_default_for_uri_async (const char *uri,
|
||||
|
||||
/**
|
||||
* g_app_info_launch_default_for_uri_finish:
|
||||
* @result: a #GAsyncResult
|
||||
* @error: (nullable): return location for an error, or %NULL
|
||||
* @result: the async result
|
||||
*
|
||||
* Finishes an asynchronous launch-default-for-uri operation.
|
||||
*
|
||||
* Returns: %TRUE if the launch was successful, %FALSE if @error is set
|
||||
* Returns: `TRUE` if the launch was successful, `FALSE` if @error is set
|
||||
*
|
||||
* Since: 2.50
|
||||
*/
|
||||
@ -1278,12 +1275,12 @@ g_app_info_launch_default_for_uri_finish (GAsyncResult *result,
|
||||
|
||||
/**
|
||||
* g_app_info_can_delete:
|
||||
* @appinfo: a #GAppInfo
|
||||
* @appinfo: the app info
|
||||
*
|
||||
* Obtains the information whether the #GAppInfo can be deleted.
|
||||
* See g_app_info_delete().
|
||||
* Obtains the information whether the [iface@Gio.AppInfo] can be deleted.
|
||||
* See [method@Gio.AppInfo.delete].
|
||||
*
|
||||
* Returns: %TRUE if @appinfo can be deleted
|
||||
* Returns: `TRUE` if @appinfo can be deleted
|
||||
*
|
||||
* Since: 2.20
|
||||
*/
|
||||
@ -1305,15 +1302,15 @@ g_app_info_can_delete (GAppInfo *appinfo)
|
||||
|
||||
/**
|
||||
* g_app_info_delete: (virtual do_delete)
|
||||
* @appinfo: a #GAppInfo
|
||||
* @appinfo: the app info
|
||||
*
|
||||
* Tries to delete a #GAppInfo.
|
||||
* Tries to delete a [iface@Gio.AppInfo].
|
||||
*
|
||||
* On some platforms, there may be a difference between user-defined
|
||||
* #GAppInfos which can be deleted, and system-wide ones which cannot.
|
||||
* See g_app_info_can_delete().
|
||||
* [iface@Gio.AppInfo]s which can be deleted, and system-wide ones which cannot.
|
||||
* See [method@Gio.AppInfo.can_delete].
|
||||
*
|
||||
* Returns: %TRUE if @appinfo has been deleted
|
||||
* Returns: `TRUE` if @appinfo has been deleted
|
||||
*
|
||||
* Since: 2.20
|
||||
*/
|
||||
@ -1348,9 +1345,10 @@ G_DEFINE_TYPE_WITH_PRIVATE (GAppLaunchContext, g_app_launch_context, G_TYPE_OBJE
|
||||
* g_app_launch_context_new:
|
||||
*
|
||||
* Creates a new application launch context. This is not normally used,
|
||||
* instead you instantiate a subclass of this, such as #GdkAppLaunchContext.
|
||||
* instead you instantiate a subclass of this, such as
|
||||
* [`GdkAppLaunchContext`](https://docs.gtk.org/gdk4/class.AppLaunchContext.html).
|
||||
*
|
||||
* Returns: a #GAppLaunchContext.
|
||||
* Returns: a launch context.
|
||||
**/
|
||||
GAppLaunchContext *
|
||||
g_app_launch_context_new (void)
|
||||
@ -1380,9 +1378,9 @@ g_app_launch_context_class_init (GAppLaunchContextClass *klass)
|
||||
* @context: the object emitting the signal
|
||||
* @startup_notify_id: the startup notification id for the failed launch
|
||||
*
|
||||
* The #GAppLaunchContext::launch-failed signal is emitted when a #GAppInfo launch
|
||||
* fails. The startup notification id is provided, so that the launcher
|
||||
* can cancel the startup notification.
|
||||
* The [signal@Gio.AppLaunchContext::launch-failed] signal is emitted when a
|
||||
* [iface@Gio.AppInfo] launch fails. The startup notification id is provided,
|
||||
* so that the launcher can cancel the startup notification.
|
||||
*
|
||||
* Because a launch operation may involve spawning multiple instances of the
|
||||
* target application, you should expect this signal to be emitted multiple
|
||||
@ -1400,14 +1398,14 @@ g_app_launch_context_class_init (GAppLaunchContextClass *klass)
|
||||
/**
|
||||
* GAppLaunchContext::launch-started:
|
||||
* @context: the object emitting the signal
|
||||
* @info: the #GAppInfo that is about to be launched
|
||||
* @info: the [iface@Gio.AppInfo] that is about to be launched
|
||||
* @platform_data: (nullable): additional platform-specific data for this launch
|
||||
*
|
||||
* The #GAppLaunchContext::launch-started signal is emitted when a #GAppInfo is
|
||||
* about to be launched. If non-null the @platform_data is an
|
||||
* GVariant dictionary mapping strings to variants (ie `a{sv}`), which
|
||||
* contains additional, platform-specific data about this launch. On
|
||||
* UNIX, at least the `startup-notification-id` keys will be
|
||||
* The [signal@Gio.AppLaunchContext::launch-started] signal is emitted when a
|
||||
* [iface@Gio.AppInfo] is about to be launched. If non-null the
|
||||
* @platform_data is an GVariant dictionary mapping strings to variants
|
||||
* (ie `a{sv}`), which contains additional, platform-specific data about this
|
||||
* launch. On UNIX, at least the `startup-notification-id` keys will be
|
||||
* present.
|
||||
*
|
||||
* The value of the `startup-notification-id` key (type `s`) is a startup
|
||||
@ -1415,8 +1413,9 @@ g_app_launch_context_class_init (GAppLaunchContextClass *klass)
|
||||
* specification](https://specifications.freedesktop.org/startup-notification-spec/startup-notification-0.1.txt).
|
||||
* It allows tracking the progress of the launchee through startup.
|
||||
*
|
||||
* It is guaranteed that this signal is followed by either a #GAppLaunchContext::launched or
|
||||
* #GAppLaunchContext::launch-failed signal.
|
||||
* It is guaranteed that this signal is followed by either a
|
||||
* [signal@Gio.AppLaunchContext::launched] or
|
||||
* [signal@Gio.AppLaunchContext::launch-failed] signal.
|
||||
*
|
||||
* Because a launch operation may involve spawning multiple instances of the
|
||||
* target application, you should expect this signal to be emitted multiple
|
||||
@ -1439,11 +1438,11 @@ g_app_launch_context_class_init (GAppLaunchContextClass *klass)
|
||||
/**
|
||||
* GAppLaunchContext::launched:
|
||||
* @context: the object emitting the signal
|
||||
* @info: the #GAppInfo that was just launched
|
||||
* @info: the [iface@Gio.AppInfo] that was just launched
|
||||
* @platform_data: additional platform-specific data for this launch
|
||||
*
|
||||
* The #GAppLaunchContext::launched signal is emitted when a #GAppInfo is successfully
|
||||
* launched.
|
||||
* The [signal@Gio.AppLaunchContext::launched] signal is emitted when a
|
||||
* [iface@Gio.AppInfo] is successfully launched.
|
||||
*
|
||||
* Because a launch operation may involve spawning multiple instances of the
|
||||
* target application, you should expect this signal to be emitted multiple
|
||||
@ -1454,14 +1453,15 @@ g_app_launch_context_class_init (GAppLaunchContextClass *klass)
|
||||
* platform-specific data about this launch. On UNIX, at least the
|
||||
* `pid` and `startup-notification-id` keys will be present.
|
||||
*
|
||||
* Since 2.72 the `pid` may be 0 if the process id wasn't known (for
|
||||
* Since 2.72 the `pid` may be 0 if the process id wasn’t known (for
|
||||
* example if the process was launched via D-Bus). The `pid` may not be
|
||||
* set at all in subsequent releases.
|
||||
*
|
||||
* On Windows, `pid` is guaranteed to be valid only for the duration of the
|
||||
* #GAppLaunchContext::launched signal emission; after the signal is emitted,
|
||||
* GLib will call g_spawn_close_pid(). If you need to keep the #GPid after the
|
||||
* signal has been emitted, then you can duplicate `pid` using `DuplicateHandle()`.
|
||||
* [signal@Gio.AppLaunchContext::launched] signal emission; after the signal
|
||||
* is emitted, GLib will call [func@GLib.spawn_close_pid]. If you need to
|
||||
* keep the [alias@GLib.Pid] after the signal has been emitted, then you can
|
||||
* duplicate `pid` using `DuplicateHandle()`.
|
||||
*
|
||||
* Since: 2.36
|
||||
*/
|
||||
@ -1486,12 +1486,12 @@ g_app_launch_context_init (GAppLaunchContext *context)
|
||||
|
||||
/**
|
||||
* g_app_launch_context_setenv:
|
||||
* @context: a #GAppLaunchContext
|
||||
* @context: the launch context
|
||||
* @variable: (type filename): the environment variable to set
|
||||
* @value: (type filename): the value for to set the variable to.
|
||||
*
|
||||
* Arranges for @variable to be set to @value in the child's
|
||||
* environment when @context is used to launch an application.
|
||||
* Arranges for @variable to be set to @value in the child’s environment when
|
||||
* @context is used to launch an application.
|
||||
*
|
||||
* Since: 2.32
|
||||
*/
|
||||
@ -1513,11 +1513,11 @@ g_app_launch_context_setenv (GAppLaunchContext *context,
|
||||
|
||||
/**
|
||||
* g_app_launch_context_unsetenv:
|
||||
* @context: a #GAppLaunchContext
|
||||
* @context: the launch context
|
||||
* @variable: (type filename): the environment variable to remove
|
||||
*
|
||||
* Arranges for @variable to be unset in the child's environment
|
||||
* when @context is used to launch an application.
|
||||
* Arranges for @variable to be unset in the child’s environment when @context
|
||||
* is used to launch an application.
|
||||
*
|
||||
* Since: 2.32
|
||||
*/
|
||||
@ -1537,15 +1537,15 @@ g_app_launch_context_unsetenv (GAppLaunchContext *context,
|
||||
|
||||
/**
|
||||
* g_app_launch_context_get_environment:
|
||||
* @context: a #GAppLaunchContext
|
||||
* @context: the launch context
|
||||
*
|
||||
* Gets the complete environment variable list to be passed to
|
||||
* the child process when @context is used to launch an application.
|
||||
* This is a %NULL-terminated array of strings, where each string has
|
||||
* This is a `NULL`-terminated array of strings, where each string has
|
||||
* the form `KEY=VALUE`.
|
||||
*
|
||||
* Returns: (array zero-terminated=1) (element-type filename) (transfer full):
|
||||
* the child's environment
|
||||
* the child’s environment
|
||||
*
|
||||
* Since: 2.32
|
||||
*/
|
||||
@ -1562,9 +1562,9 @@ g_app_launch_context_get_environment (GAppLaunchContext *context)
|
||||
|
||||
/**
|
||||
* g_app_launch_context_get_display:
|
||||
* @context: a #GAppLaunchContext
|
||||
* @info: a #GAppInfo
|
||||
* @files: (element-type GFile): a #GList of #GFile objects
|
||||
* @context: the launch context
|
||||
* @info: the app info
|
||||
* @files: (element-type GFile): a list of [iface@Gio.File] objects
|
||||
*
|
||||
* Gets the display string for the @context. This is used to ensure new
|
||||
* applications are started on the same display as the launching
|
||||
@ -1592,9 +1592,9 @@ g_app_launch_context_get_display (GAppLaunchContext *context,
|
||||
|
||||
/**
|
||||
* g_app_launch_context_get_startup_notify_id:
|
||||
* @context: a #GAppLaunchContext
|
||||
* @info: a #GAppInfo
|
||||
* @files: (element-type GFile): a #GList of #GFile objects
|
||||
* @context: the launch context
|
||||
* @info: the app info
|
||||
* @files: (element-type GFile): list of [iface@Gio.File] objects
|
||||
*
|
||||
* Initiates startup notification for the application and returns the
|
||||
* `XDG_ACTIVATION_TOKEN` or `DESKTOP_STARTUP_ID` for the launched operation,
|
||||
@ -1610,8 +1610,8 @@ g_app_launch_context_get_display (GAppLaunchContext *context,
|
||||
*
|
||||
* Support for the XDG Activation Protocol was added in GLib 2.76.
|
||||
*
|
||||
* Returns: (nullable): a startup notification ID for the application, or %NULL if
|
||||
* not supported.
|
||||
* Returns: (nullable): a startup notification ID for the application, or `NULL` if
|
||||
* not supported.
|
||||
**/
|
||||
char *
|
||||
g_app_launch_context_get_startup_notify_id (GAppLaunchContext *context,
|
||||
@ -1634,11 +1634,13 @@ g_app_launch_context_get_startup_notify_id (GAppLaunchContext *context,
|
||||
|
||||
/**
|
||||
* g_app_launch_context_launch_failed:
|
||||
* @context: a #GAppLaunchContext.
|
||||
* @startup_notify_id: the startup notification id that was returned by g_app_launch_context_get_startup_notify_id().
|
||||
* @context: the launch context
|
||||
* @startup_notify_id: the startup notification id that was returned by
|
||||
* [method@Gio.AppLaunchContext.get_startup_notify_id].
|
||||
*
|
||||
* Called when an application has failed to launch, so that it can cancel
|
||||
* the application startup notification started in g_app_launch_context_get_startup_notify_id().
|
||||
* the application startup notification started in
|
||||
* [method@Gio.AppLaunchContext.get_startup_notify_id].
|
||||
*
|
||||
**/
|
||||
void
|
||||
@ -1756,7 +1758,7 @@ g_app_info_monitor_class_init (GAppInfoMonitorClass *class)
|
||||
* Gets the #GAppInfoMonitor for the current thread-default main
|
||||
* context.
|
||||
*
|
||||
* The #GAppInfoMonitor will emit a "changed" signal in the
|
||||
* The #GAppInfoMonitor will emit a “changed” signal in the
|
||||
* thread-default main context whenever the list of installed
|
||||
* applications (as reported by g_app_info_get_all()) may have changed.
|
||||
*
|
||||
|
@ -49,32 +49,47 @@ typedef struct _GAppLaunchContextPrivate GAppLaunchContextPrivate;
|
||||
/**
|
||||
* GAppInfoIface:
|
||||
* @g_iface: The parent interface.
|
||||
* @dup: Copies a #GAppInfo.
|
||||
* @equal: Checks two #GAppInfos for equality.
|
||||
* @get_id: Gets a string identifier for a #GAppInfo.
|
||||
* @get_name: Gets the name of the application for a #GAppInfo.
|
||||
* @get_description: Gets a short description for the application described by the #GAppInfo.
|
||||
* @get_executable: Gets the executable name for the #GAppInfo.
|
||||
* @get_icon: Gets the #GIcon for the #GAppInfo.
|
||||
* @launch: Launches an application specified by the #GAppInfo.
|
||||
* @supports_uris: Indicates whether the application specified supports launching URIs.
|
||||
* @supports_files: Indicates whether the application specified accepts filename arguments.
|
||||
* @dup: Copies a [iface@Gio.AppInfo].
|
||||
* @equal: Checks two [iface@Gio.AppInfo]s for equality.
|
||||
* @get_id: Gets a string identifier for a [iface@Gio.AppInfo].
|
||||
* @get_name: Gets the name of the application for a [iface@Gio.AppInfo].
|
||||
* @get_description: Gets a short description for the application described by
|
||||
* the [iface@Gio.AppInfo].
|
||||
* @get_executable: Gets the executable name for the [iface@Gio.AppInfo].
|
||||
* @get_icon: Gets the [iface@Gio.Icon] for the [iface@Gio.AppInfo].
|
||||
* @launch: Launches an application specified by the [iface@Gio.AppInfo].
|
||||
* @supports_uris: Indicates whether the application specified supports
|
||||
* launching URIs.
|
||||
* @supports_files: Indicates whether the application specified accepts
|
||||
* filename arguments.
|
||||
* @launch_uris: Launches an application with a list of URIs.
|
||||
* @should_show: Returns whether an application should be shown (e.g. when getting a list of installed applications).
|
||||
* [FreeDesktop.Org Startup Notification Specification](http://standards.freedesktop.org/startup-notification-spec/startup-notification-latest.txt).
|
||||
* @set_as_default_for_type: Sets an application as default for a given content type.
|
||||
* @set_as_default_for_extension: Sets an application as default for a given file extension.
|
||||
* @add_supports_type: Adds to the #GAppInfo information about supported file types.
|
||||
* @can_remove_supports_type: Checks for support for removing supported file types from a #GAppInfo.
|
||||
* @remove_supports_type: Removes a supported application type from a #GAppInfo.
|
||||
* @can_delete: Checks if a #GAppInfo can be deleted. Since 2.20
|
||||
* @do_delete: Deletes a #GAppInfo. Since 2.20
|
||||
* @get_commandline: Gets the commandline for the #GAppInfo. Since 2.20
|
||||
* @get_display_name: Gets the display name for the #GAppInfo. Since 2.24
|
||||
* @set_as_last_used_for_type: Sets the application as the last used. See g_app_info_set_as_last_used_for_type().
|
||||
* @get_supported_types: Retrieves the list of content types that @app_info claims to support.
|
||||
* @launch_uris_async: Asynchronously launches an application with a list of URIs. (Since: 2.60)
|
||||
* @launch_uris_finish: Finishes an operation started with @launch_uris_async. (Since: 2.60)
|
||||
* @should_show: Returns whether an application should be shown (e.g. when
|
||||
* getting a list of installed applications).
|
||||
* [FreeDesktop.Org Startup Notification Specification](http://standards.freedesktop.org/startup-notification-spec/startup-notification-latest.txt).
|
||||
* @set_as_default_for_type: Sets an application as default for a given content
|
||||
* type.
|
||||
* @set_as_default_for_extension: Sets an application as default for a given
|
||||
* file extension.
|
||||
* @add_supports_type: Adds to the [iface@Gio.AppInfo] information about
|
||||
* supported file types.
|
||||
* @can_remove_supports_type: Checks for support for removing supported file
|
||||
* types from a [iface@Gio.AppInfo].
|
||||
* @remove_supports_type: Removes a supported application type from a
|
||||
* [iface@Gio.AppInfo].
|
||||
* @can_delete: Checks if a [iface@Gio.AppInfo] can be deleted. (Since 2.20)
|
||||
* @do_delete: Deletes a [iface@Gio.AppInfo]. (Since 2.20)
|
||||
* @get_commandline: Gets the commandline for the [iface@Gio.AppInfo].
|
||||
* (Since 2.20)
|
||||
* @get_display_name: Gets the display name for the [iface@Gio.AppInfo].
|
||||
* (Since 2.24)
|
||||
* @set_as_last_used_for_type: Sets the application as the last used. See
|
||||
* [method@Gio.AppInfo.set_as_last_used_for_type].
|
||||
* @get_supported_types: Retrieves the list of content types that @app_info
|
||||
* claims to support.
|
||||
* @launch_uris_async: Asynchronously launches an application with a list of
|
||||
* URIs. (Since: 2.60)
|
||||
* @launch_uris_finish: Finishes an operation started with @launch_uris_async.
|
||||
* (Since: 2.60)
|
||||
|
||||
* Application Information interface, for operating system portability.
|
||||
*/
|
||||
|
@ -36,7 +36,7 @@
|
||||
/**
|
||||
* GBufferedInputStream:
|
||||
*
|
||||
* Buffered input stream implements #GFilterInputStream and provides
|
||||
* Buffered input stream implements [class@Gio.FilterInputStream] and provides
|
||||
* for buffered reads.
|
||||
*
|
||||
* By default, `GBufferedInputStream`'s buffer size is set at 4 kilobytes.
|
||||
@ -176,7 +176,7 @@ g_buffered_input_stream_class_init (GBufferedInputStreamClass *klass)
|
||||
|
||||
/**
|
||||
* g_buffered_input_stream_get_buffer_size:
|
||||
* @stream: a #GBufferedInputStream
|
||||
* @stream: a [class@Gio.BufferedInputStream]
|
||||
*
|
||||
* Gets the size of the input buffer.
|
||||
*
|
||||
@ -192,7 +192,7 @@ g_buffered_input_stream_get_buffer_size (GBufferedInputStream *stream)
|
||||
|
||||
/**
|
||||
* g_buffered_input_stream_set_buffer_size:
|
||||
* @stream: a #GBufferedInputStream
|
||||
* @stream: a [class@Gio.BufferedInputStream]
|
||||
* @size: a #gsize
|
||||
*
|
||||
* Sets the size of the internal buffer of @stream to @size, or to the
|
||||
@ -319,12 +319,12 @@ g_buffered_input_stream_init (GBufferedInputStream *stream)
|
||||
|
||||
/**
|
||||
* g_buffered_input_stream_new:
|
||||
* @base_stream: a #GInputStream
|
||||
* @base_stream: a [class@Gio.InputStream]
|
||||
*
|
||||
* Creates a new #GInputStream from the given @base_stream, with
|
||||
* Creates a new [class@Gio.InputStream] from the given @base_stream, with
|
||||
* a buffer set to the default size (4 kilobytes).
|
||||
*
|
||||
* Returns: a #GInputStream for the given @base_stream.
|
||||
* Returns: a [class@Gio.InputStream] for the given @base_stream.
|
||||
*/
|
||||
GInputStream *
|
||||
g_buffered_input_stream_new (GInputStream *base_stream)
|
||||
@ -342,13 +342,13 @@ g_buffered_input_stream_new (GInputStream *base_stream)
|
||||
|
||||
/**
|
||||
* g_buffered_input_stream_new_sized:
|
||||
* @base_stream: a #GInputStream
|
||||
* @base_stream: a [class@Gio.InputStream]
|
||||
* @size: a #gsize
|
||||
*
|
||||
* Creates a new #GBufferedInputStream from the given @base_stream,
|
||||
* Creates a new [class@Gio.BufferedInputStream] from the given @base_stream,
|
||||
* with a buffer set to @size.
|
||||
*
|
||||
* Returns: a #GInputStream.
|
||||
* Returns: a [class@Gio.InputStream].
|
||||
*/
|
||||
GInputStream *
|
||||
g_buffered_input_stream_new_sized (GInputStream *base_stream,
|
||||
@ -368,16 +368,17 @@ g_buffered_input_stream_new_sized (GInputStream *base_stream,
|
||||
|
||||
/**
|
||||
* g_buffered_input_stream_fill:
|
||||
* @stream: a #GBufferedInputStream
|
||||
* @stream: a [class@Gio.BufferedInputStream]
|
||||
* @count: the number of bytes that will be read from the stream
|
||||
* @cancellable: (nullable): optional #GCancellable object, %NULL to ignore
|
||||
* @error: location to store the error occurring, or %NULL to ignore
|
||||
* @cancellable: (nullable): optional [class@Gio.Cancellable] object, `NULL` to ignore
|
||||
* @error: location to store the error occurring, or `NULL` to ignore
|
||||
*
|
||||
* Tries to read @count bytes from the stream into the buffer.
|
||||
* Will block during this read.
|
||||
*
|
||||
* If @count is zero, returns zero and does nothing. A value of @count
|
||||
* larger than %G_MAXSSIZE will cause a %G_IO_ERROR_INVALID_ARGUMENT error.
|
||||
* larger than `G_MAXSSIZE` will cause a
|
||||
* [error@Gio.IOErrorEnum.INVALID_ARGUMENT] error.
|
||||
*
|
||||
* On success, the number of bytes read into the buffer is returned.
|
||||
* It is not an error if this is not the same as the requested size, as it
|
||||
@ -387,19 +388,19 @@ g_buffered_input_stream_new_sized (GInputStream *base_stream,
|
||||
* If @count is -1 then the attempted read size is equal to the number of
|
||||
* bytes that are required to fill the buffer.
|
||||
*
|
||||
* If @cancellable is not %NULL, then the operation can be cancelled by
|
||||
* If @cancellable is not `NULL`, then the operation can be cancelled by
|
||||
* triggering the cancellable object from another thread. If the operation
|
||||
* was cancelled, the error %G_IO_ERROR_CANCELLED will be returned. If an
|
||||
* operation was partially finished when the operation was cancelled the
|
||||
* was cancelled, the error [error@Gio.IOErrorEnum.CANCELLED] will be returned.
|
||||
* If an operation was partially finished when the operation was cancelled the
|
||||
* partial result will be returned, without an error.
|
||||
*
|
||||
* On error -1 is returned and @error is set accordingly.
|
||||
* On error `-1` is returned and @error is set accordingly.
|
||||
*
|
||||
* For the asynchronous, non-blocking, version of this function, see
|
||||
* g_buffered_input_stream_fill_async().
|
||||
* [method@Gio.BufferedInputStream.fill_async].
|
||||
*
|
||||
* Returns: the number of bytes read into @stream's buffer, up to @count,
|
||||
* or -1 on error.
|
||||
* or `-1` on error.
|
||||
*/
|
||||
gssize
|
||||
g_buffered_input_stream_fill (GBufferedInputStream *stream,
|
||||
@ -453,18 +454,18 @@ async_fill_callback_wrapper (GObject *source_object,
|
||||
|
||||
/**
|
||||
* g_buffered_input_stream_fill_async:
|
||||
* @stream: a #GBufferedInputStream
|
||||
* @stream: a [class@Gio.BufferedInputStream]
|
||||
* @count: the number of bytes that will be read from the stream
|
||||
* @io_priority: the [I/O priority](iface.AsyncResult.html#io-priority) of the request
|
||||
* @cancellable: (nullable): optional #GCancellable object
|
||||
* @callback: (scope async) (closure user_data): a #GAsyncReadyCallback
|
||||
* @cancellable: (nullable): optional [class@Gio.Cancellable] object
|
||||
* @callback: (scope async) (closure user_data): a [callback@Gio.AsyncReadyCallback]
|
||||
* @user_data: a #gpointer
|
||||
*
|
||||
* Reads data into @stream's buffer asynchronously, up to @count size.
|
||||
* @io_priority can be used to prioritize reads. For the synchronous
|
||||
* version of this function, see g_buffered_input_stream_fill().
|
||||
* version of this function, see [method@Gio.BufferedInputStream.fill].
|
||||
*
|
||||
* If @count is -1 then the attempted read size is equal to the number
|
||||
* If @count is `-1` then the attempted read size is equal to the number
|
||||
* of bytes that are required to fill the buffer.
|
||||
*/
|
||||
void
|
||||
@ -519,9 +520,9 @@ g_buffered_input_stream_fill_async (GBufferedInputStream *stream,
|
||||
|
||||
/**
|
||||
* g_buffered_input_stream_fill_finish:
|
||||
* @stream: a #GBufferedInputStream
|
||||
* @result: a #GAsyncResult
|
||||
* @error: a #GError
|
||||
* @stream: a [class@Gio.BufferedInputStream]
|
||||
* @result: a [iface@Gio.AsyncResult]
|
||||
* @error: a [type@GLib.Error]
|
||||
*
|
||||
* Finishes an asynchronous read.
|
||||
*
|
||||
@ -548,7 +549,7 @@ g_buffered_input_stream_fill_finish (GBufferedInputStream *stream,
|
||||
|
||||
/**
|
||||
* g_buffered_input_stream_get_available:
|
||||
* @stream: #GBufferedInputStream
|
||||
* @stream: [class@Gio.BufferedInputStream]
|
||||
*
|
||||
* Gets the size of the available data within the stream.
|
||||
*
|
||||
@ -564,7 +565,7 @@ g_buffered_input_stream_get_available (GBufferedInputStream *stream)
|
||||
|
||||
/**
|
||||
* g_buffered_input_stream_peek:
|
||||
* @stream: a #GBufferedInputStream
|
||||
* @stream: a [class@Gio.BufferedInputStream]
|
||||
* @buffer: (array length=count) (element-type guint8): a pointer to
|
||||
* an allocated chunk of memory
|
||||
* @offset: a #gsize
|
||||
@ -573,7 +574,7 @@ g_buffered_input_stream_get_available (GBufferedInputStream *stream)
|
||||
* Peeks in the buffer, copying data of size @count into @buffer,
|
||||
* offset @offset bytes.
|
||||
*
|
||||
* Returns: a #gsize of the number of bytes peeked, or -1 on error.
|
||||
* Returns: a #gsize of the number of bytes peeked, or `-1` on error.
|
||||
*/
|
||||
gsize
|
||||
g_buffered_input_stream_peek (GBufferedInputStream *stream,
|
||||
@ -601,7 +602,7 @@ g_buffered_input_stream_peek (GBufferedInputStream *stream,
|
||||
|
||||
/**
|
||||
* g_buffered_input_stream_peek_buffer:
|
||||
* @stream: a #GBufferedInputStream
|
||||
* @stream: a [class@Gio.BufferedInputStream]
|
||||
* @count: (out): a #gsize to get the number of bytes available in the buffer
|
||||
*
|
||||
* Returns the buffer with the currently available bytes. The returned
|
||||
@ -942,25 +943,25 @@ g_buffered_input_stream_truncate (GSeekable *seekable,
|
||||
|
||||
/**
|
||||
* g_buffered_input_stream_read_byte:
|
||||
* @stream: a #GBufferedInputStream
|
||||
* @cancellable: (nullable): optional #GCancellable object, %NULL to ignore
|
||||
* @error: location to store the error occurring, or %NULL to ignore
|
||||
* @stream: a [class@Gio.BufferedInputStream]
|
||||
* @cancellable: (nullable): optional [class@Gio.Cancellable] object, `NULL` to ignore
|
||||
* @error: location to store the error occurring, or `NULL` to ignore
|
||||
*
|
||||
* Tries to read a single byte from the stream or the buffer. Will block
|
||||
* during this read.
|
||||
*
|
||||
* On success, the byte read from the stream is returned. On end of stream
|
||||
* -1 is returned but it's not an exceptional error and @error is not set.
|
||||
* `-1` is returned but it's not an exceptional error and @error is not set.
|
||||
*
|
||||
* If @cancellable is not %NULL, then the operation can be cancelled by
|
||||
* If @cancellable is not `NULL`, then the operation can be cancelled by
|
||||
* triggering the cancellable object from another thread. If the operation
|
||||
* was cancelled, the error %G_IO_ERROR_CANCELLED will be returned. If an
|
||||
* operation was partially finished when the operation was cancelled the
|
||||
* was cancelled, the error [error@Gio.IOErrorEnum.CANCELLED] will be returned.
|
||||
* If an operation was partially finished when the operation was cancelled the
|
||||
* partial result will be returned, without an error.
|
||||
*
|
||||
* On error -1 is returned and @error is set accordingly.
|
||||
* On error `-1` is returned and @error is set accordingly.
|
||||
*
|
||||
* Returns: the byte read from the @stream, or -1 on end of stream or error.
|
||||
* Returns: the byte read from the @stream, or `-1` on end of stream or error.
|
||||
*/
|
||||
int
|
||||
g_buffered_input_stream_read_byte (GBufferedInputStream *stream,
|
||||
|
@ -175,7 +175,7 @@ g_buffered_output_stream_class_init (GBufferedOutputStreamClass *klass)
|
||||
|
||||
/**
|
||||
* g_buffered_output_stream_get_buffer_size:
|
||||
* @stream: a #GBufferedOutputStream.
|
||||
* @stream: a [class@Gio.BufferedOutputStream].
|
||||
*
|
||||
* Gets the size of the buffer in the @stream.
|
||||
*
|
||||
@ -191,7 +191,7 @@ g_buffered_output_stream_get_buffer_size (GBufferedOutputStream *stream)
|
||||
|
||||
/**
|
||||
* g_buffered_output_stream_set_buffer_size:
|
||||
* @stream: a #GBufferedOutputStream.
|
||||
* @stream: a [class@Gio.BufferedOutputStream].
|
||||
* @size: a #gsize.
|
||||
*
|
||||
* Sets the size of the internal buffer to @size.
|
||||
@ -233,12 +233,12 @@ g_buffered_output_stream_set_buffer_size (GBufferedOutputStream *stream,
|
||||
|
||||
/**
|
||||
* g_buffered_output_stream_get_auto_grow:
|
||||
* @stream: a #GBufferedOutputStream.
|
||||
* @stream: a [class@Gio.BufferedOutputStream].
|
||||
*
|
||||
* Checks if the buffer automatically grows as data is added.
|
||||
*
|
||||
* Returns: %TRUE if the @stream's buffer automatically grows,
|
||||
* %FALSE otherwise.
|
||||
* Returns: `TRUE` if the @stream's buffer automatically grows,
|
||||
* `FALSE` otherwise.
|
||||
**/
|
||||
gboolean
|
||||
g_buffered_output_stream_get_auto_grow (GBufferedOutputStream *stream)
|
||||
@ -250,7 +250,7 @@ g_buffered_output_stream_get_auto_grow (GBufferedOutputStream *stream)
|
||||
|
||||
/**
|
||||
* g_buffered_output_stream_set_auto_grow:
|
||||
* @stream: a #GBufferedOutputStream.
|
||||
* @stream: a [class@Gio.BufferedOutputStream].
|
||||
* @auto_grow: a #gboolean.
|
||||
*
|
||||
* Sets whether or not the @stream's buffer should automatically grow.
|
||||
@ -361,11 +361,11 @@ g_buffered_output_stream_seekable_iface_init (GSeekableIface *iface)
|
||||
|
||||
/**
|
||||
* g_buffered_output_stream_new:
|
||||
* @base_stream: a #GOutputStream.
|
||||
* @base_stream: a [class@Gio.OutputStream].
|
||||
*
|
||||
* Creates a new buffered output stream for a base stream.
|
||||
*
|
||||
* Returns: a #GOutputStream for the given @base_stream.
|
||||
* Returns: a [class@Gio.OutputStream] for the given @base_stream.
|
||||
**/
|
||||
GOutputStream *
|
||||
g_buffered_output_stream_new (GOutputStream *base_stream)
|
||||
@ -383,12 +383,12 @@ g_buffered_output_stream_new (GOutputStream *base_stream)
|
||||
|
||||
/**
|
||||
* g_buffered_output_stream_new_sized:
|
||||
* @base_stream: a #GOutputStream.
|
||||
* @base_stream: a [class@Gio.OutputStream].
|
||||
* @size: a #gsize.
|
||||
*
|
||||
* Creates a new buffered output stream with a given buffer size.
|
||||
*
|
||||
* Returns: a #GOutputStream with an internal buffer set to @size.
|
||||
* Returns: a [class@Gio.OutputStream] with an internal buffer set to @size.
|
||||
**/
|
||||
GOutputStream *
|
||||
g_buffered_output_stream_new_sized (GOutputStream *base_stream,
|
||||
|
@ -4486,17 +4486,18 @@ g_desktop_app_info_get_desktop_ids_for_content_type (const gchar *content_type,
|
||||
|
||||
/**
|
||||
* g_app_info_get_recommended_for_type:
|
||||
* @content_type: the content type to find a #GAppInfo for
|
||||
* @content_type: the content type to find a [iface@Gio.AppInfo] for
|
||||
*
|
||||
* Gets a list of recommended [iface@Gio.AppInfo]s for a given content type,
|
||||
* i.e. those applications which claim to support the given content type
|
||||
* exactly, and not by MIME type subclassing.
|
||||
*
|
||||
* Gets a list of recommended #GAppInfos for a given content type, i.e.
|
||||
* those applications which claim to support the given content type exactly,
|
||||
* and not by MIME type subclassing.
|
||||
* Note that the first application of the list is the last used one, i.e.
|
||||
* the last one for which g_app_info_set_as_last_used_for_type() has been
|
||||
* called.
|
||||
* the last one for which [method@Gio.AppInfo.set_as_last_used_for_type] has
|
||||
* been called.
|
||||
*
|
||||
* Returns: (element-type GAppInfo) (transfer full): #GList of #GAppInfos
|
||||
* for given @content_type or %NULL on error.
|
||||
* Returns: (element-type GAppInfo) (transfer full): list of
|
||||
* [iface@Gio.AppInfo]s for given @content_type or `NULL` on error.
|
||||
*
|
||||
* Since: 2.28
|
||||
**/
|
||||
@ -4528,14 +4529,14 @@ g_app_info_get_recommended_for_type (const gchar *content_type)
|
||||
|
||||
/**
|
||||
* g_app_info_get_fallback_for_type:
|
||||
* @content_type: the content type to find a #GAppInfo for
|
||||
* @content_type: the content type to find a [iface@Gio.AppInfo] for
|
||||
*
|
||||
* Gets a list of fallback #GAppInfos for a given content type, i.e.
|
||||
* those applications which claim to support the given content type
|
||||
* by MIME type subclassing and not directly.
|
||||
* Gets a list of fallback [iface@Gio.AppInfo]s for a given content type, i.e.
|
||||
* those applications which claim to support the given content type by MIME
|
||||
* type subclassing and not directly.
|
||||
*
|
||||
* Returns: (element-type GAppInfo) (transfer full): #GList of #GAppInfos
|
||||
* for given @content_type or %NULL on error.
|
||||
* Returns: (element-type GAppInfo) (transfer full): list of [iface@Gio.AppInfo]s
|
||||
* for given @content_type or `NULL` on error.
|
||||
*
|
||||
* Since: 2.28
|
||||
**/
|
||||
@ -4580,15 +4581,15 @@ g_app_info_get_fallback_for_type (const gchar *content_type)
|
||||
|
||||
/**
|
||||
* g_app_info_get_all_for_type:
|
||||
* @content_type: the content type to find a #GAppInfo for
|
||||
* @content_type: the content type to find a [iface@Gio.AppInfo] for
|
||||
*
|
||||
* Gets a list of all #GAppInfos for a given content type,
|
||||
* including the recommended and fallback #GAppInfos. See
|
||||
* g_app_info_get_recommended_for_type() and
|
||||
* g_app_info_get_fallback_for_type().
|
||||
* Gets a list of all [iface@Gio.AppInfo]s for a given content type,
|
||||
* including the recommended and fallback [iface@Gio.AppInfo]s. See
|
||||
* [func@Gio.AppInfo.get_recommended_for_type] and
|
||||
* [func@Gio.AppInfo.get_fallback_for_type].
|
||||
*
|
||||
* Returns: (element-type GAppInfo) (transfer full): #GList of #GAppInfos
|
||||
* for given @content_type or %NULL on error.
|
||||
* Returns: (element-type GAppInfo) (transfer full): list of
|
||||
* [iface@Gio.AppInfo]s for given @content_type.
|
||||
**/
|
||||
GList *
|
||||
g_app_info_get_all_for_type (const char *content_type)
|
||||
@ -4621,10 +4622,10 @@ g_app_info_get_all_for_type (const char *content_type)
|
||||
* @content_type: a content type
|
||||
*
|
||||
* Removes all changes to the type associations done by
|
||||
* g_app_info_set_as_default_for_type(),
|
||||
* g_app_info_set_as_default_for_extension(),
|
||||
* g_app_info_add_supports_type() or
|
||||
* g_app_info_remove_supports_type().
|
||||
* [method@Gio.AppInfo.set_as_default_for_type],
|
||||
* [method@Gio.AppInfo.set_as_default_for_extension],
|
||||
* [method@Gio.AppInfo.add_supports_type] or
|
||||
* [method@Gio.AppInfo.remove_supports_type].
|
||||
*
|
||||
* Since: 2.20
|
||||
*/
|
||||
@ -4638,14 +4639,14 @@ g_app_info_reset_type_associations (const char *content_type)
|
||||
|
||||
/**
|
||||
* g_app_info_get_default_for_type:
|
||||
* @content_type: the content type to find a #GAppInfo for
|
||||
* @must_support_uris: if %TRUE, the #GAppInfo is expected to
|
||||
* support URIs
|
||||
* @content_type: the content type to find a [iface@Gio.AppInfo] for
|
||||
* @must_support_uris: if `TRUE`, the [iface@Gio.AppInfo] is expected to
|
||||
* support URIs
|
||||
*
|
||||
* Gets the default #GAppInfo for a given content type.
|
||||
* Gets the default [iface@Gio.AppInfo] for a given content type.
|
||||
*
|
||||
* Returns: (transfer full) (nullable): #GAppInfo for given @content_type or
|
||||
* %NULL on error.
|
||||
* Returns: (transfer full) (nullable): [iface@Gio.AppInfo] for given
|
||||
* @content_type or `NULL` on error.
|
||||
*/
|
||||
GAppInfo *
|
||||
g_app_info_get_default_for_type (const char *content_type,
|
||||
@ -4899,11 +4900,12 @@ g_desktop_app_info_search (const gchar *search_string)
|
||||
*
|
||||
* For desktop files, this includes applications that have
|
||||
* `NoDisplay=true` set or are excluded from display by means
|
||||
* of `OnlyShowIn` or `NotShowIn`. See g_app_info_should_show().
|
||||
* of `OnlyShowIn` or `NotShowIn`. See [method@Gio.AppInfo.should_show].
|
||||
* The returned list does not include applications which have
|
||||
* the `Hidden` key set.
|
||||
*
|
||||
* Returns: (element-type GAppInfo) (transfer full): a newly allocated #GList of references to #GAppInfos.
|
||||
* Returns: (element-type GAppInfo) (transfer full): a newly allocated
|
||||
* list of references to [iface@Gio.AppInfo]s.
|
||||
**/
|
||||
GList *
|
||||
g_app_info_get_all (void)
|
||||
|
@ -195,11 +195,11 @@ g_filter_output_stream_init (GFilterOutputStream *stream)
|
||||
|
||||
/**
|
||||
* g_filter_output_stream_get_base_stream:
|
||||
* @stream: a #GFilterOutputStream.
|
||||
* @stream: a [class@Gio.FilterOutputStream].
|
||||
*
|
||||
* Gets the base stream for the filter stream.
|
||||
*
|
||||
* Returns: (transfer none): a #GOutputStream.
|
||||
* Returns: (transfer none): a [class@Gio.OutputStream].
|
||||
**/
|
||||
GOutputStream *
|
||||
g_filter_output_stream_get_base_stream (GFilterOutputStream *stream)
|
||||
@ -211,12 +211,12 @@ g_filter_output_stream_get_base_stream (GFilterOutputStream *stream)
|
||||
|
||||
/**
|
||||
* g_filter_output_stream_get_close_base_stream:
|
||||
* @stream: a #GFilterOutputStream.
|
||||
* @stream: a [class@Gio.FilterOutputStream].
|
||||
*
|
||||
* Returns whether the base stream will be closed when @stream is
|
||||
* closed.
|
||||
*
|
||||
* Returns: %TRUE if the base stream will be closed.
|
||||
* Returns: `TRUE` if the base stream will be closed.
|
||||
**/
|
||||
gboolean
|
||||
g_filter_output_stream_get_close_base_stream (GFilterOutputStream *stream)
|
||||
@ -232,8 +232,8 @@ g_filter_output_stream_get_close_base_stream (GFilterOutputStream *stream)
|
||||
|
||||
/**
|
||||
* g_filter_output_stream_set_close_base_stream:
|
||||
* @stream: a #GFilterOutputStream.
|
||||
* @close_base: %TRUE to close the base stream.
|
||||
* @stream: a [class@Gio.FilterOutputStream].
|
||||
* @close_base: `TRUE` to close the base stream.
|
||||
*
|
||||
* Sets whether the base stream will be closed when @stream is closed.
|
||||
**/
|
||||
|
@ -231,7 +231,8 @@ test_connection_failed (void)
|
||||
g_main_context_iteration (NULL, TRUE);
|
||||
|
||||
conn = g_socket_client_connect_to_uri_finish (client, async_result, &local_error);
|
||||
g_assert_error (local_error, G_IO_ERROR, G_IO_ERROR_CONNECTION_REFUSED);
|
||||
g_assert_nonnull (local_error);
|
||||
g_assert_cmpint (local_error->domain, ==, G_IO_ERROR);
|
||||
g_assert_null (conn);
|
||||
g_clear_error (&local_error);
|
||||
g_clear_object (&async_result);
|
||||
|
@ -227,6 +227,10 @@ test_invalid_header (void)
|
||||
static void
|
||||
test_record_ownership (void)
|
||||
{
|
||||
#ifndef HAVE_DN_COMP
|
||||
g_test_skip ("The dn_comp() function was not available.");
|
||||
return;
|
||||
#else
|
||||
GByteArray *answer = NULL, *txt_rdata = NULL;
|
||||
GList *records = NULL;
|
||||
GError *local_error = NULL;
|
||||
@ -261,6 +265,7 @@ test_record_ownership (void)
|
||||
|
||||
g_list_free_full (records, (GDestroyNotify) g_variant_unref);
|
||||
g_byte_array_free (answer, TRUE);
|
||||
#endif
|
||||
}
|
||||
|
||||
static void
|
||||
|
@ -57,14 +57,14 @@
|
||||
/* If GLib itself is not compiled with ASAN sanitizer we may still want to
|
||||
* control it in case it's linked by the loading application, so we need to
|
||||
* do this check dynamically.
|
||||
* However MinGW doesn't support weak attribute properly (even if it advertises
|
||||
* However MinGW/Cygwin doesn't support weak attribute properly (even if it advertises
|
||||
* it), so we ignore it in such case since it's not convenient to go through
|
||||
* dlsym().
|
||||
* Under MSVC we could use alternatename, but it doesn't seem to be as reliable
|
||||
* as we'd like: https://stackoverflow.com/a/11529277/210151 and
|
||||
* https://devblogs.microsoft.com/oldnewthing/20200731-00/?p=104024
|
||||
*/
|
||||
#elif defined (G_OS_UNIX) && !defined (__APPLE__) && g_macro__has_attribute (weak)
|
||||
#elif defined (G_OS_UNIX) && !defined (__APPLE__) && !defined(__CYGWIN__) && g_macro__has_attribute (weak)
|
||||
|
||||
#define HAS_DYNAMIC_ASAN_LOADING
|
||||
|
||||
|
34
glib/gnode.c
@ -800,16 +800,38 @@ g_node_depth_traverse_level (GNode *node,
|
||||
* efficient than the other orders.
|
||||
*
|
||||
* Specifies the type of traversal performed by g_tree_traverse(),
|
||||
* g_node_traverse() and g_node_find(). The different orders are
|
||||
* illustrated here:
|
||||
* g_node_traverse() and g_node_find().
|
||||
*
|
||||
* The different orders are illustrated here:
|
||||
*
|
||||
* - In order: A, B, C, D, E, F, G, H, I
|
||||
* ![](Sorted_binary_tree_inorder.svg)
|
||||
* <picture>
|
||||
* <source srcset="Sorted_binary_tree_inorder-dark.svg"
|
||||
* media="(prefers-color-scheme: dark)">
|
||||
* <img src="Sorted_binary_tree_inorder.svg"
|
||||
* alt="Sorted binary tree, in-order traversal">
|
||||
* </picture>
|
||||
* - Pre order: F, B, A, D, C, E, G, I, H
|
||||
* ![](Sorted_binary_tree_preorder.svg)
|
||||
* <picture>
|
||||
* <source srcset="Sorted_binary_tree_preorder-dark.svg"
|
||||
* media="(prefers-color-scheme: dark)">
|
||||
* <img src="Sorted_binary_tree_preorder.svg"
|
||||
* alt="Sorted binary tree, pre-order traversal">
|
||||
* </picture>
|
||||
* - Post order: A, C, E, D, B, H, I, G, F
|
||||
* ![](Sorted_binary_tree_postorder.svg)
|
||||
* <picture>
|
||||
* <source srcset="Sorted_binary_tree_postorder-dark.svg"
|
||||
* media="(prefers-color-scheme: dark)">
|
||||
* <img src="Sorted_binary_tree_postorder.svg"
|
||||
* alt="Sorted binary tree, post-order traversal">
|
||||
* </picture>
|
||||
* - Level order: F, B, G, A, D, I, C, E, H
|
||||
* ![](Sorted_binary_tree_breadth-first_traversal.svg)
|
||||
* <picture>
|
||||
* <source srcset="Sorted_binary_tree_breadth-first_traversal-dark.svg"
|
||||
* media="(prefers-color-scheme: dark)">
|
||||
* <img src="Sorted_binary_tree_breadth-first_traversal.svg"
|
||||
* alt="Sorted binary tree, breadth-first level order traversal">
|
||||
* </picture>
|
||||
*/
|
||||
|
||||
/**
|
||||
|
@ -321,6 +321,8 @@ g_qsort_with_data (gconstpointer pbase,
|
||||
* (like [`qsort_r()`](man:qsort_r(3))).
|
||||
*
|
||||
* Unlike `qsort()`, this is guaranteed to be a stable sort.
|
||||
*
|
||||
* Since: 2.82
|
||||
*/
|
||||
void
|
||||
g_sort_array (const void *array,
|
||||
|
@ -136,7 +136,7 @@ _g_module_open (const gchar *file_name,
|
||||
|
||||
lock_dlerror ();
|
||||
handle = dlopen (file_name,
|
||||
(bind_local ? 0 : RTLD_GLOBAL) | (bind_lazy ? RTLD_LAZY : RTLD_NOW));
|
||||
(bind_local ? RTLD_LOCAL : RTLD_GLOBAL) | (bind_lazy ? RTLD_LAZY : RTLD_NOW));
|
||||
if (!handle)
|
||||
{
|
||||
const gchar *message = fetch_dlerror (TRUE);
|
||||
|
@ -233,6 +233,42 @@ test_module_invalid_libtool_archive (void)
|
||||
g_free (la_filename);
|
||||
}
|
||||
|
||||
static void
|
||||
test_local_binding (void)
|
||||
{
|
||||
gchar *plugin = NULL;
|
||||
GModule *module_plugin = NULL, *module_self = NULL;
|
||||
GError *error = NULL;
|
||||
|
||||
gboolean found_symbol = FALSE;
|
||||
gpointer symbol = NULL;
|
||||
|
||||
g_test_summary ("Test that binding a library's symbols locally does not add them globally");
|
||||
|
||||
#if defined(G_PLATFORM_WIN32)
|
||||
g_test_skip ("G_MODULE_BIND_LOCAL is not supported on Windows.");
|
||||
return;
|
||||
#endif
|
||||
|
||||
plugin = g_test_build_filename (G_TEST_BUILT, MODULE_FILENAME_PREFIX "moduletestplugin_a_" MODULE_TYPE, NULL);
|
||||
|
||||
module_plugin = g_module_open_full (plugin, G_MODULE_BIND_LOCAL, &error);
|
||||
g_assert_no_error (error);
|
||||
g_assert_nonnull (module_plugin);
|
||||
|
||||
module_self = g_module_open_full (NULL, 0, &error);
|
||||
g_assert_no_error (error);
|
||||
g_assert_nonnull (module_self);
|
||||
|
||||
found_symbol = g_module_symbol (module_self, "gplugin_say_boo_func", &symbol);
|
||||
g_assert_false (found_symbol);
|
||||
g_assert_null (symbol);
|
||||
|
||||
g_module_close (module_self);
|
||||
g_module_close (module_plugin);
|
||||
g_free (plugin);
|
||||
}
|
||||
|
||||
int
|
||||
main (int argc, char *argv[])
|
||||
{
|
||||
@ -240,6 +276,7 @@ main (int argc, char *argv[])
|
||||
|
||||
g_test_add_func ("/module/basics", test_module_basics);
|
||||
g_test_add_func ("/module/invalid-libtool-archive", test_module_invalid_libtool_archive);
|
||||
g_test_add_func ("/module/local-binding", test_local_binding);
|
||||
|
||||
return g_test_run ();
|
||||
}
|
||||
|
@ -1724,6 +1724,94 @@ guint g_type_get_type_registration_serial (void);
|
||||
return G_TYPE_INSTANCE_GET_CLASS (ptr, module_obj_name##_get_type (), ModuleObjName##Class); } \
|
||||
G_GNUC_END_IGNORE_DEPRECATIONS
|
||||
|
||||
/**
|
||||
* G_DECLARE_PROTECTED_TYPE:
|
||||
* @ModuleObjName: The name of the new type, in camel case (like GtkWidget)
|
||||
* @module_obj_name: The name of the new type in lowercase, with words
|
||||
* separated by '_' (like 'gtk_widget')
|
||||
* @MODULE: The name of the module, in all caps (like 'GTK')
|
||||
* @OBJ_NAME: The bare name of the type, in all caps (like 'WIDGET')
|
||||
* @ParentName: the name of the parent type, in camel case (like GtkWidget)
|
||||
*
|
||||
* A convenience macro for emitting the usual declarations in the header file for a type which is not (at the
|
||||
* present time) intended to be subclassed from outside a project.
|
||||
*
|
||||
* You might use it in a header as follows:
|
||||
*
|
||||
* |[
|
||||
* #ifndef _myapp_window_h_
|
||||
* #define _myapp_window_h_
|
||||
*
|
||||
* #include <gtk/gtk.h>
|
||||
*
|
||||
* #define MY_APP_TYPE_WINDOW my_app_window_get_type ()
|
||||
* G_DECLARE_PROTECTED_TYPE (MyAppWindow, my_app_window, MY_APP, WINDOW, GtkWindow)
|
||||
*
|
||||
* MyAppWindow * my_app_window_new (void);
|
||||
*
|
||||
* ...
|
||||
*
|
||||
* #endif
|
||||
* ]|
|
||||
*
|
||||
* This results in the following things happening:
|
||||
*
|
||||
* - the usual my_app_window_get_type() function is declared with a return type of #GType
|
||||
*
|
||||
* - the MyAppWindow types is defined as a typedef of struct _MyAppWindow. The struct itself is not
|
||||
* defined and should be defined from the private .h file included in the source file before
|
||||
* G_DEFINE_TYPE() is used.
|
||||
*
|
||||
* - the MY_APP_WINDOW() cast is emitted as static inline function along with the MY_APP_IS_WINDOW() type
|
||||
* checking function.
|
||||
*
|
||||
* - the MY_APP_WINDOW_CLASS() cast is emitted as static inline functions along with the
|
||||
* MY_APP_WINDOW_CLASS() type checking function; there is no MY_APP_WINDOW_GET_CLASS()
|
||||
* accessor function for the class structure from an instance, as the class structure
|
||||
* an opaque type.
|
||||
*
|
||||
* - the MyAppWindowClass type is defined as a typedef of struct _MyAppWindowClass. The struct itself
|
||||
* is not define and should be defined from the private .h file included in the source file before
|
||||
* G_DEFINE_TYPE() is used.
|
||||
*
|
||||
* - g_autoptr() support being added for your type, based on the type of your parent class.
|
||||
*
|
||||
* You can only use this function if your parent type also supports g_autoptr().
|
||||
*
|
||||
* Because the type macro (MY_APP_TYPE_WINDOW in the above example) is not a callable, you must continue to
|
||||
* manually define this as a macro for yourself.
|
||||
*
|
||||
* The declaration of the _get_type() function is the first thing emitted by the macro. This allows this macro
|
||||
* to be used in the usual way with export control and API versioning macros.
|
||||
*
|
||||
* If you want to declare a type derivable by users of your code, use G_DECLARE_DERIVABLE_TYPE().
|
||||
*
|
||||
* If you are writing a library, it is important to note that it is possible to convert a type from using
|
||||
* G_DECLARE_FINAL_TYPE() to G_DECLARE_DERIVABLE_TYPE() without breaking API or ABI. As a precaution, you
|
||||
* should therefore use G_DECLARE_FINAL_TYPE() until you are sure that it makes sense for your class to be
|
||||
* subclassed. Once a class structure has been exposed it is not possible to change its size or remove or
|
||||
* reorder items without breaking the API and/or ABI.
|
||||
*
|
||||
* Since: 2.64
|
||||
**/
|
||||
#define G_DECLARE_PROTECTED_TYPE(ModuleObjName, module_obj_name, MODULE, OBJ_NAME, ParentName) \
|
||||
GType module_obj_name##_get_type (void); \
|
||||
G_GNUC_BEGIN_IGNORE_DEPRECATIONS \
|
||||
typedef struct _##ModuleObjName ModuleObjName; \
|
||||
typedef struct _##ModuleObjName##Class ModuleObjName##Class; \
|
||||
\
|
||||
_GLIB_DEFINE_AUTOPTR_CHAINUP (ModuleObjName, ParentName) \
|
||||
\
|
||||
G_GNUC_UNUSED static inline ModuleObjName * MODULE##_##OBJ_NAME (gpointer ptr) { \
|
||||
return G_TYPE_CHECK_INSTANCE_CAST (ptr, module_obj_name##_get_type (), ModuleObjName); } \
|
||||
G_GNUC_UNUSED static inline ModuleObjName##Class * MODULE##_##OBJ_NAME##_CLASS (gpointer ptr) { \
|
||||
return G_TYPE_CHECK_CLASS_CAST (ptr, module_obj_name##_get_type (), ModuleObjName##Class); } \
|
||||
G_GNUC_UNUSED static inline gboolean MODULE##_IS_##OBJ_NAME (gpointer ptr) { \
|
||||
return G_TYPE_CHECK_INSTANCE_TYPE (ptr, module_obj_name##_get_type ()); } \
|
||||
G_GNUC_UNUSED static inline gboolean MODULE##_IS_##OBJ_NAME##_CLASS (gpointer ptr) { \
|
||||
return G_TYPE_CHECK_CLASS_TYPE (ptr, module_obj_name##_get_type ()); } \
|
||||
G_GNUC_END_IGNORE_DEPRECATIONS
|
||||
|
||||
/**
|
||||
* G_DECLARE_INTERFACE:
|
||||
* @ModuleObjName: The name of the new type, in camel case (like `GtkWidget`)
|
||||
|