чување beafe36e931cb72eda9401ce2b76a31ff0b03a7d
�утор: Страхиња Радић <sr@strahinja.org>
Датум: Wed, 30 Jul 2025 20:14:48 +0200
Initial import
Diffstat:
измењених датотека: 23, додавања: 24167(+), бри�ања: 0(-)
diff --git a/.gitignore b/.gitignore
@@ -0,0 +1,29 @@
+.cache
+.gdbinit
+*.session
+.rebuild
+*~
+*.bak
+*.err
+*.orig
+*.rej
+*.o
+*.sig
+*.swp
+*.did
+tags
+**/tags
+cscope.out
+nohup.out
+*.err
+*.gz
+*.xz
+!*.xcf.xz
+*.pdf
+*.1
+PKGBUILD
+linije
+linije.1
+date
+version
+version.h
diff --git a/INSTALL b/INSTALL
@@ -0,0 +1,41 @@
+Prerequisites
+=============
+
+* C compiler - defaults in config.mk
+* libSDL v3 (SDL3, SDL3_image - as of 2025-07, build from source:
+ https://github.com/libsdl-org/SDL
+ https://github.com/libsdl-org/SDL_image
+ Confirmed as needed in OpenBSD and Alpine)
+
+
+Install
+-------
+
+ $ git clone https://git.sr.ht/~strahinja/lav-sdl
+ $ cd lav-sdl
+ $ su
+ # make install
+
+
+Persistent build configuration file
+-----------------------------------
+
+The file config.mk will be sourced when building targets which also accept
+configuration through environment variables. For example, CPPFLAGS and PREFIX
+are specified in config.mk.
+
+
+OpenBSD
+-------
+
+Before running make(1), comment the _CPPFLAGS and INCLUDE definitions in
+config.mk above the line with the "OpenBSD" comment and uncomment the ones below
+it:
+
+ #_CPPFLAGS = -D_DEFAULT_SOURCE -D_POSIX_C_SOURCE=200809L \
+ # -D_XOPEN_SOURCE=700
+ #INCLUDE = -I/usr/include
+ # OpenBSD
+ _CPPFLAGS = -D_DEFAULT_SOURCE -D_POSIX_C_SOURCE=200809L \
+ -D_XOPEN_SOURCE=700 -D_BSD_SOURCE
+ #INCLUDE = -I/usr/local/include
diff --git a/LICENSE b/LICENSE
@@ -0,0 +1,674 @@
+ GNU GENERAL PUBLIC LICENSE
+ Version 3, 29 June 2007
+
+ Copyright (C) 2007 Free Software Foundation, Inc. <https://fsf.org/>
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+ Preamble
+
+ The GNU General Public License is a free, copyleft license for
+software and other kinds of works.
+
+ The licenses for most software and other practical works are designed
+to take away your freedom to share and change the works. By contrast,
+the GNU General Public License is intended to guarantee your freedom to
+share and change all versions of a program--to make sure it remains free
+software for all its users. We, the Free Software Foundation, use the
+GNU General Public License for most of our software; it applies also to
+any other work released this way by its authors. You can apply it to
+your programs, too.
+
+ When we speak of free software, we are referring to freedom, not
+price. Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+them if you wish), that you receive source code or can get it if you
+want it, that you can change the software or use pieces of it in new
+free programs, and that you know you can do these things.
+
+ To protect your rights, we need to prevent others from denying you
+these rights or asking you to surrender the rights. Therefore, you have
+certain responsibilities if you distribute copies of the software, or if
+you modify it: responsibilities to respect the freedom of others.
+
+ For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must pass on to the recipients the same
+freedoms that you received. You must make sure that they, too, receive
+or can get the source code. And you must show them these terms so they
+know their rights.
+
+ Developers that use the GNU GPL protect your rights with two steps:
+(1) assert copyright on the software, and (2) offer you this License
+giving you legal permission to copy, distribute and/or modify it.
+
+ For the developers' and authors' protection, the GPL clearly explains
+that there is no warranty for this free software. For both users' and
+authors' sake, the GPL requires that modified versions be marked as
+changed, so that their problems will not be attributed erroneously to
+authors of previous versions.
+
+ Some devices are designed to deny users access to install or run
+modified versions of the software inside them, although the manufacturer
+can do so. This is fundamentally incompatible with the aim of
+protecting users' freedom to change the software. The systematic
+pattern of such abuse occurs in the area of products for individuals to
+use, which is precisely where it is most unacceptable. Therefore, we
+have designed this version of the GPL to prohibit the practice for those
+products. If such problems arise substantially in other domains, we
+stand ready to extend this provision to those domains in future versions
+of the GPL, as needed to protect the freedom of users.
+
+ Finally, every program is threatened constantly by software patents.
+States should not allow patents to restrict development and use of
+software on general-purpose computers, but in those that do, we wish to
+avoid the special danger that patents applied to a free program could
+make it effectively proprietary. To prevent this, the GPL assures that
+patents cannot be used to render the program non-free.
+
+ The precise terms and conditions for copying, distribution and
+modification follow.
+
+ TERMS AND CONDITIONS
+
+ 0. Definitions.
+
+ "This License" refers to version 3 of the GNU General Public License.
+
+ "Copyright" also means copyright-like laws that apply to other kinds of
+works, such as semiconductor masks.
+
+ "The Program" refers to any copyrightable work licensed under this
+License. Each licensee is addressed as "you". "Licensees" and
+"recipients" may be individuals or organizations.
+
+ To "modify" a work means to copy from or adapt all or part of the work
+in a fashion requiring copyright permission, other than the making of an
+exact copy. The resulting work is called a "modified version" of the
+earlier work or a work "based on" the earlier work.
+
+ A "covered work" means either the unmodified Program or a work based
+on the Program.
+
+ To "propagate" a work means to do anything with it that, without
+permission, would make you directly or secondarily liable for
+infringement under applicable copyright law, except executing it on a
+computer or modifying a private copy. Propagation includes copying,
+distribution (with or without modification), making available to the
+public, and in some countries other activities as well.
+
+ To "convey" a work means any kind of propagation that enables other
+parties to make or receive copies. Mere interaction with a user through
+a computer network, with no transfer of a copy, is not conveying.
+
+ An interactive user interface displays "Appropriate Legal Notices"
+to the extent that it includes a convenient and prominently visible
+feature that (1) displays an appropriate copyright notice, and (2)
+tells the user that there is no warranty for the work (except to the
+extent that warranties are provided), that licensees may convey the
+work under this License, and how to view a copy of this License. If
+the interface presents a list of user commands or options, such as a
+menu, a prominent item in the list meets this criterion.
+
+ 1. Source Code.
+
+ The "source code" for a work means the preferred form of the work
+for making modifications to it. "Object code" means any non-source
+form of a work.
+
+ A "Standard Interface" means an interface that either is an official
+standard defined by a recognized standards body, or, in the case of
+interfaces specified for a particular programming language, one that
+is widely used among developers working in that language.
+
+ The "System Libraries" of an executable work include anything, other
+than the work as a whole, that (a) is included in the normal form of
+packaging a Major Component, but which is not part of that Major
+Component, and (b) serves only to enable use of the work with that
+Major Component, or to implement a Standard Interface for which an
+implementation is available to the public in source code form. A
+"Major Component", in this context, means a major essential component
+(kernel, window system, and so on) of the specific operating system
+(if any) on which the executable work runs, or a compiler used to
+produce the work, or an object code interpreter used to run it.
+
+ The "Corresponding Source" for a work in object code form means all
+the source code needed to generate, install, and (for an executable
+work) run the object code and to modify the work, including scripts to
+control those activities. However, it does not include the work's
+System Libraries, or general-purpose tools or generally available free
+programs which are used unmodified in performing those activities but
+which are not part of the work. For example, Corresponding Source
+includes interface definition files associated with source files for
+the work, and the source code for shared libraries and dynamically
+linked subprograms that the work is specifically designed to require,
+such as by intimate data communication or control flow between those
+subprograms and other parts of the work.
+
+ The Corresponding Source need not include anything that users
+can regenerate automatically from other parts of the Corresponding
+Source.
+
+ The Corresponding Source for a work in source code form is that
+same work.
+
+ 2. Basic Permissions.
+
+ All rights granted under this License are granted for the term of
+copyright on the Program, and are irrevocable provided the stated
+conditions are met. This License explicitly affirms your unlimited
+permission to run the unmodified Program. The output from running a
+covered work is covered by this License only if the output, given its
+content, constitutes a covered work. This License acknowledges your
+rights of fair use or other equivalent, as provided by copyright law.
+
+ You may make, run and propagate covered works that you do not
+convey, without conditions so long as your license otherwise remains
+in force. You may convey covered works to others for the sole purpose
+of having them make modifications exclusively for you, or provide you
+with facilities for running those works, provided that you comply with
+the terms of this License in conveying all material for which you do
+not control copyright. Those thus making or running the covered works
+for you must do so exclusively on your behalf, under your direction
+and control, on terms that prohibit them from making any copies of
+your copyrighted material outside their relationship with you.
+
+ Conveying under any other circumstances is permitted solely under
+the conditions stated below. Sublicensing is not allowed; section 10
+makes it unnecessary.
+
+ 3. Protecting Users' Legal Rights From Anti-Circumvention Law.
+
+ No covered work shall be deemed part of an effective technological
+measure under any applicable law fulfilling obligations under article
+11 of the WIPO copyright treaty adopted on 20 December 1996, or
+similar laws prohibiting or restricting circumvention of such
+measures.
+
+ When you convey a covered work, you waive any legal power to forbid
+circumvention of technological measures to the extent such circumvention
+is effected by exercising rights under this License with respect to
+the covered work, and you disclaim any intention to limit operation or
+modification of the work as a means of enforcing, against the work's
+users, your or third parties' legal rights to forbid circumvention of
+technological measures.
+
+ 4. Conveying Verbatim Copies.
+
+ You may convey verbatim copies of the Program's source code as you
+receive it, in any medium, provided that you conspicuously and
+appropriately publish on each copy an appropriate copyright notice;
+keep intact all notices stating that this License and any
+non-permissive terms added in accord with section 7 apply to the code;
+keep intact all notices of the absence of any warranty; and give all
+recipients a copy of this License along with the Program.
+
+ You may charge any price or no price for each copy that you convey,
+and you may offer support or warranty protection for a fee.
+
+ 5. Conveying Modified Source Versions.
+
+ You may convey a work based on the Program, or the modifications to
+produce it from the Program, in the form of source code under the
+terms of section 4, provided that you also meet all of these conditions:
+
+ a) The work must carry prominent notices stating that you modified
+ it, and giving a relevant date.
+
+ b) The work must carry prominent notices stating that it is
+ released under this License and any conditions added under section
+ 7. This requirement modifies the requirement in section 4 to
+ "keep intact all notices".
+
+ c) You must license the entire work, as a whole, under this
+ License to anyone who comes into possession of a copy. This
+ License will therefore apply, along with any applicable section 7
+ additional terms, to the whole of the work, and all its parts,
+ regardless of how they are packaged. This License gives no
+ permission to license the work in any other way, but it does not
+ invalidate such permission if you have separately received it.
+
+ d) If the work has interactive user interfaces, each must display
+ Appropriate Legal Notices; however, if the Program has interactive
+ interfaces that do not display Appropriate Legal Notices, your
+ work need not make them do so.
+
+ A compilation of a covered work with other separate and independent
+works, which are not by their nature extensions of the covered work,
+and which are not combined with it such as to form a larger program,
+in or on a volume of a storage or distribution medium, is called an
+"aggregate" if the compilation and its resulting copyright are not
+used to limit the access or legal rights of the compilation's users
+beyond what the individual works permit. Inclusion of a covered work
+in an aggregate does not cause this License to apply to the other
+parts of the aggregate.
+
+ 6. Conveying Non-Source Forms.
+
+ You may convey a covered work in object code form under the terms
+of sections 4 and 5, provided that you also convey the
+machine-readable Corresponding Source under the terms of this License,
+in one of these ways:
+
+ a) Convey the object code in, or embodied in, a physical product
+ (including a physical distribution medium), accompanied by the
+ Corresponding Source fixed on a durable physical medium
+ customarily used for software interchange.
+
+ b) Convey the object code in, or embodied in, a physical product
+ (including a physical distribution medium), accompanied by a
+ written offer, valid for at least three years and valid for as
+ long as you offer spare parts or customer support for that product
+ model, to give anyone who possesses the object code either (1) a
+ copy of the Corresponding Source for all the software in the
+ product that is covered by this License, on a durable physical
+ medium customarily used for software interchange, for a price no
+ more than your reasonable cost of physically performing this
+ conveying of source, or (2) access to copy the
+ Corresponding Source from a network server at no charge.
+
+ c) Convey individual copies of the object code with a copy of the
+ written offer to provide the Corresponding Source. This
+ alternative is allowed only occasionally and noncommercially, and
+ only if you received the object code with such an offer, in accord
+ with subsection 6b.
+
+ d) Convey the object code by offering access from a designated
+ place (gratis or for a charge), and offer equivalent access to the
+ Corresponding Source in the same way through the same place at no
+ further charge. You need not require recipients to copy the
+ Corresponding Source along with the object code. If the place to
+ copy the object code is a network server, the Corresponding Source
+ may be on a different server (operated by you or a third party)
+ that supports equivalent copying facilities, provided you maintain
+ clear directions next to the object code saying where to find the
+ Corresponding Source. Regardless of what server hosts the
+ Corresponding Source, you remain obligated to ensure that it is
+ available for as long as needed to satisfy these requirements.
+
+ e) Convey the object code using peer-to-peer transmission, provided
+ you inform other peers where the object code and Corresponding
+ Source of the work are being offered to the general public at no
+ charge under subsection 6d.
+
+ A separable portion of the object code, whose source code is excluded
+from the Corresponding Source as a System Library, need not be
+included in conveying the object code work.
+
+ A "User Product" is either (1) a "consumer product", which means any
+tangible personal property which is normally used for personal, family,
+or household purposes, or (2) anything designed or sold for incorporation
+into a dwelling. In determining whether a product is a consumer product,
+doubtful cases shall be resolved in favor of coverage. For a particular
+product received by a particular user, "normally used" refers to a
+typical or common use of that class of product, regardless of the status
+of the particular user or of the way in which the particular user
+actually uses, or expects or is expected to use, the product. A product
+is a consumer product regardless of whether the product has substantial
+commercial, industrial or non-consumer uses, unless such uses represent
+the only significant mode of use of the product.
+
+ "Installation Information" for a User Product means any methods,
+procedures, authorization keys, or other information required to install
+and execute modified versions of a covered work in that User Product from
+a modified version of its Corresponding Source. The information must
+suffice to ensure that the continued functioning of the modified object
+code is in no case prevented or interfered with solely because
+modification has been made.
+
+ If you convey an object code work under this section in, or with, or
+specifically for use in, a User Product, and the conveying occurs as
+part of a transaction in which the right of possession and use of the
+User Product is transferred to the recipient in perpetuity or for a
+fixed term (regardless of how the transaction is characterized), the
+Corresponding Source conveyed under this section must be accompanied
+by the Installation Information. But this requirement does not apply
+if neither you nor any third party retains the ability to install
+modified object code on the User Product (for example, the work has
+been installed in ROM).
+
+ The requirement to provide Installation Information does not include a
+requirement to continue to provide support service, warranty, or updates
+for a work that has been modified or installed by the recipient, or for
+the User Product in which it has been modified or installed. Access to a
+network may be denied when the modification itself materially and
+adversely affects the operation of the network or violates the rules and
+protocols for communication across the network.
+
+ Corresponding Source conveyed, and Installation Information provided,
+in accord with this section must be in a format that is publicly
+documented (and with an implementation available to the public in
+source code form), and must require no special password or key for
+unpacking, reading or copying.
+
+ 7. Additional Terms.
+
+ "Additional permissions" are terms that supplement the terms of this
+License by making exceptions from one or more of its conditions.
+Additional permissions that are applicable to the entire Program shall
+be treated as though they were included in this License, to the extent
+that they are valid under applicable law. If additional permissions
+apply only to part of the Program, that part may be used separately
+under those permissions, but the entire Program remains governed by
+this License without regard to the additional permissions.
+
+ When you convey a copy of a covered work, you may at your option
+remove any additional permissions from that copy, or from any part of
+it. (Additional permissions may be written to require their own
+removal in certain cases when you modify the work.) You may place
+additional permissions on material, added by you to a covered work,
+for which you have or can give appropriate copyright permission.
+
+ Notwithstanding any other provision of this License, for material you
+add to a covered work, you may (if authorized by the copyright holders of
+that material) supplement the terms of this License with terms:
+
+ a) Disclaiming warranty or limiting liability differently from the
+ terms of sections 15 and 16 of this License; or
+
+ b) Requiring preservation of specified reasonable legal notices or
+ author attributions in that material or in the Appropriate Legal
+ Notices displayed by works containing it; or
+
+ c) Prohibiting misrepresentation of the origin of that material, or
+ requiring that modified versions of such material be marked in
+ reasonable ways as different from the original version; or
+
+ d) Limiting the use for publicity purposes of names of licensors or
+ authors of the material; or
+
+ e) Declining to grant rights under trademark law for use of some
+ trade names, trademarks, or service marks; or
+
+ f) Requiring indemnification of licensors and authors of that
+ material by anyone who conveys the material (or modified versions of
+ it) with contractual assumptions of liability to the recipient, for
+ any liability that these contractual assumptions directly impose on
+ those licensors and authors.
+
+ All other non-permissive additional terms are considered "further
+restrictions" within the meaning of section 10. If the Program as you
+received it, or any part of it, contains a notice stating that it is
+governed by this License along with a term that is a further
+restriction, you may remove that term. If a license document contains
+a further restriction but permits relicensing or conveying under this
+License, you may add to a covered work material governed by the terms
+of that license document, provided that the further restriction does
+not survive such relicensing or conveying.
+
+ If you add terms to a covered work in accord with this section, you
+must place, in the relevant source files, a statement of the
+additional terms that apply to those files, or a notice indicating
+where to find the applicable terms.
+
+ Additional terms, permissive or non-permissive, may be stated in the
+form of a separately written license, or stated as exceptions;
+the above requirements apply either way.
+
+ 8. Termination.
+
+ You may not propagate or modify a covered work except as expressly
+provided under this License. Any attempt otherwise to propagate or
+modify it is void, and will automatically terminate your rights under
+this License (including any patent licenses granted under the third
+paragraph of section 11).
+
+ However, if you cease all violation of this License, then your
+license from a particular copyright holder is reinstated (a)
+provisionally, unless and until the copyright holder explicitly and
+finally terminates your license, and (b) permanently, if the copyright
+holder fails to notify you of the violation by some reasonable means
+prior to 60 days after the cessation.
+
+ Moreover, your license from a particular copyright holder is
+reinstated permanently if the copyright holder notifies you of the
+violation by some reasonable means, this is the first time you have
+received notice of violation of this License (for any work) from that
+copyright holder, and you cure the violation prior to 30 days after
+your receipt of the notice.
+
+ Termination of your rights under this section does not terminate the
+licenses of parties who have received copies or rights from you under
+this License. If your rights have been terminated and not permanently
+reinstated, you do not qualify to receive new licenses for the same
+material under section 10.
+
+ 9. Acceptance Not Required for Having Copies.
+
+ You are not required to accept this License in order to receive or
+run a copy of the Program. Ancillary propagation of a covered work
+occurring solely as a consequence of using peer-to-peer transmission
+to receive a copy likewise does not require acceptance. However,
+nothing other than this License grants you permission to propagate or
+modify any covered work. These actions infringe copyright if you do
+not accept this License. Therefore, by modifying or propagating a
+covered work, you indicate your acceptance of this License to do so.
+
+ 10. Automatic Licensing of Downstream Recipients.
+
+ Each time you convey a covered work, the recipient automatically
+receives a license from the original licensors, to run, modify and
+propagate that work, subject to this License. You are not responsible
+for enforcing compliance by third parties with this License.
+
+ An "entity transaction" is a transaction transferring control of an
+organization, or substantially all assets of one, or subdividing an
+organization, or merging organizations. If propagation of a covered
+work results from an entity transaction, each party to that
+transaction who receives a copy of the work also receives whatever
+licenses to the work the party's predecessor in interest had or could
+give under the previous paragraph, plus a right to possession of the
+Corresponding Source of the work from the predecessor in interest, if
+the predecessor has it or can get it with reasonable efforts.
+
+ You may not impose any further restrictions on the exercise of the
+rights granted or affirmed under this License. For example, you may
+not impose a license fee, royalty, or other charge for exercise of
+rights granted under this License, and you may not initiate litigation
+(including a cross-claim or counterclaim in a lawsuit) alleging that
+any patent claim is infringed by making, using, selling, offering for
+sale, or importing the Program or any portion of it.
+
+ 11. Patents.
+
+ A "contributor" is a copyright holder who authorizes use under this
+License of the Program or a work on which the Program is based. The
+work thus licensed is called the contributor's "contributor version".
+
+ A contributor's "essential patent claims" are all patent claims
+owned or controlled by the contributor, whether already acquired or
+hereafter acquired, that would be infringed by some manner, permitted
+by this License, of making, using, or selling its contributor version,
+but do not include claims that would be infringed only as a
+consequence of further modification of the contributor version. For
+purposes of this definition, "control" includes the right to grant
+patent sublicenses in a manner consistent with the requirements of
+this License.
+
+ Each contributor grants you a non-exclusive, worldwide, royalty-free
+patent license under the contributor's essential patent claims, to
+make, use, sell, offer for sale, import and otherwise run, modify and
+propagate the contents of its contributor version.
+
+ In the following three paragraphs, a "patent license" is any express
+agreement or commitment, however denominated, not to enforce a patent
+(such as an express permission to practice a patent or covenant not to
+sue for patent infringement). To "grant" such a patent license to a
+party means to make such an agreement or commitment not to enforce a
+patent against the party.
+
+ If you convey a covered work, knowingly relying on a patent license,
+and the Corresponding Source of the work is not available for anyone
+to copy, free of charge and under the terms of this License, through a
+publicly available network server or other readily accessible means,
+then you must either (1) cause the Corresponding Source to be so
+available, or (2) arrange to deprive yourself of the benefit of the
+patent license for this particular work, or (3) arrange, in a manner
+consistent with the requirements of this License, to extend the patent
+license to downstream recipients. "Knowingly relying" means you have
+actual knowledge that, but for the patent license, your conveying the
+covered work in a country, or your recipient's use of the covered work
+in a country, would infringe one or more identifiable patents in that
+country that you have reason to believe are valid.
+
+ If, pursuant to or in connection with a single transaction or
+arrangement, you convey, or propagate by procuring conveyance of, a
+covered work, and grant a patent license to some of the parties
+receiving the covered work authorizing them to use, propagate, modify
+or convey a specific copy of the covered work, then the patent license
+you grant is automatically extended to all recipients of the covered
+work and works based on it.
+
+ A patent license is "discriminatory" if it does not include within
+the scope of its coverage, prohibits the exercise of, or is
+conditioned on the non-exercise of one or more of the rights that are
+specifically granted under this License. You may not convey a covered
+work if you are a party to an arrangement with a third party that is
+in the business of distributing software, under which you make payment
+to the third party based on the extent of your activity of conveying
+the work, and under which the third party grants, to any of the
+parties who would receive the covered work from you, a discriminatory
+patent license (a) in connection with copies of the covered work
+conveyed by you (or copies made from those copies), or (b) primarily
+for and in connection with specific products or compilations that
+contain the covered work, unless you entered into that arrangement,
+or that patent license was granted, prior to 28 March 2007.
+
+ Nothing in this License shall be construed as excluding or limiting
+any implied license or other defenses to infringement that may
+otherwise be available to you under applicable patent law.
+
+ 12. No Surrender of Others' Freedom.
+
+ If conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License. If you cannot convey a
+covered work so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you may
+not convey it at all. For example, if you agree to terms that obligate you
+to collect a royalty for further conveying from those to whom you convey
+the Program, the only way you could satisfy both those terms and this
+License would be to refrain entirely from conveying the Program.
+
+ 13. Use with the GNU Affero General Public License.
+
+ Notwithstanding any other provision of this License, you have
+permission to link or combine any covered work with a work licensed
+under version 3 of the GNU Affero General Public License into a single
+combined work, and to convey the resulting work. The terms of this
+License will continue to apply to the part which is the covered work,
+but the special requirements of the GNU Affero General Public License,
+section 13, concerning interaction through a network will apply to the
+combination as such.
+
+ 14. Revised Versions of this License.
+
+ The Free Software Foundation may publish revised and/or new versions of
+the GNU General Public License from time to time. Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+ Each version is given a distinguishing version number. If the
+Program specifies that a certain numbered version of the GNU General
+Public License "or any later version" applies to it, you have the
+option of following the terms and conditions either of that numbered
+version or of any later version published by the Free Software
+Foundation. If the Program does not specify a version number of the
+GNU General Public License, you may choose any version ever published
+by the Free Software Foundation.
+
+ If the Program specifies that a proxy can decide which future
+versions of the GNU General Public License can be used, that proxy's
+public statement of acceptance of a version permanently authorizes you
+to choose that version for the Program.
+
+ Later license versions may give you additional or different
+permissions. However, no additional obligations are imposed on any
+author or copyright holder as a result of your choosing to follow a
+later version.
+
+ 15. Disclaimer of Warranty.
+
+ THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
+APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
+HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
+OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
+THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
+IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
+ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+ 16. Limitation of Liability.
+
+ IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
+THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
+GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
+USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
+DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
+PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
+EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGES.
+
+ 17. Interpretation of Sections 15 and 16.
+
+ If the disclaimer of warranty and limitation of liability provided
+above cannot be given local legal effect according to their terms,
+reviewing courts shall apply local law that most closely approximates
+an absolute waiver of all civil liability in connection with the
+Program, unless a warranty or assumption of liability accompanies a
+copy of the Program in return for a fee.
+
+ END OF TERMS AND CONDITIONS
+
+ How to Apply These Terms to Your New Programs
+
+ If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+ To do so, attach the following notices to the program. It is safest
+to attach them to the start of each source file to most effectively
+state the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+ <one line to give the program's name and a brief idea of what it does.>
+ Copyright (C) <year> <name of author>
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <https://www.gnu.org/licenses/>.
+
+Also add information on how to contact you by electronic and paper mail.
+
+ If the program does terminal interaction, make it output a short
+notice like this when it starts in an interactive mode:
+
+ <program> Copyright (C) <year> <name of author>
+ This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+ This is free software, and you are welcome to redistribute it
+ under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License. Of course, your program's commands
+might be different; for a GUI interface, you would use an "about box".
+
+ You should also get your employer (if you work as a programmer) or school,
+if any, to sign a "copyright disclaimer" for the program, if necessary.
+For more information on this, and how to apply and follow the GNU GPL, see
+<https://www.gnu.org/licenses/>.
+
+ The GNU General Public License does not permit incorporating your program
+into proprietary programs. If your program is a subroutine library, you
+may consider it more useful to permit linking proprietary applications with
+the library. If this is what you want to do, use the GNU Lesser General
+Public License instead of this License. But first, please read
+<https://www.gnu.org/licenses/why-not-lgpl.html>.
diff --git a/Makefile b/Makefile
@@ -0,0 +1,58 @@
+.POSIX:
+
+include config.mk
+
+.SUFFIXES: .c .o .h.in .h
+
+.h.in.h:
+ sh -c 'DATADIR=$(DATADIR) lib/replacepat $< $@'
+
+all: makedate makeversion $(PROG)
+ if [ -f .rebuild ]; then rm .rebuild; make -e all; else true; fi
+
+local.h: local.h.in
+
+date:
+ sh lib/makedate
+
+version:
+ sh lib/makeversion
+
+makedate:
+ sh lib/makedate -l
+
+makeversion:
+ sh lib/makeversion -l
+
+linije.o: linije.c local.h version.h
+
+version.h: version.h.in date version
+
+$(PROG): $(OBJS) $(SRC) $(HEADERS)
+ $(CC) $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) -o $@ $(OBJS) $(LIBS)
+
+clean:
+ rm -f $(PROG) $(OBJS) local.h version.h *~
+
+install: all
+ find . \( -name '*.dat' -o -name '*.png' \) -exec sh -c 'umask 022; \
+ $(INSTALL) -Dm 0644 {} $(DATADIR)/{}' shell \;
+ $(INSTALL) -Dm 0644 README $(DOCDIR)/README
+ $(INSTALL) -Dm 0644 LICENSE $(DOCDIR)/LICENSE
+ $(INSTALL) -Dm 0644 OFL.TXT $(DOCDIR)/OFL.TXT
+ $(INSTALL) -Dm 0755 $(PROG) $(BINDIR)/$(PROG)
+
+uninstall:
+ find "$(DATADIR)" -type f -exec rm -f {} +
+ rmdir $(DATADIR) 2>/dev/null || true
+ rm -f $(DOCDIR)/README
+ rm -f $(DOCDIR)/LICENSE
+ rm -f $(DOCDIR)/OFL.TXT
+ rmdir $(DOCDIR) 2>/dev/null || true
+ rm -f $(BINDIR)/$(PROG)
+ rmdir $(BINDIR) 2>/dev/null || true
+
+pack: all
+ sh -x lib/mkpack
+
+.PHONY: all clean install pack uninstall
diff --git a/README b/README
@@ -0,0 +1,42 @@
+Linije
+======
+
+Color lines clone
+
+
+Install
+-------
+
+See the file INSTALL in this repository.
+
+
+License
+-------
+
+linije - Color lines clone
+Copyright (C) 2025 Strahinya Radich
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <https://www.gnu.org/licenses/>.
+
+---
+
+Sprite sheet sprites.png (source file sprites.xcf.xz) hand drawn/crafted in GIMP
+by Strahinya Radich.
+
+Sprite sheet ter12.png (source file ter12.xcf.xz) created in GIMP using Terminus
+font 4.49.1. Terminus font Copyright (C) 2020 Dimitar Toshkov Zhekov[1],
+licensed under SIL Open Font License 1.1. See file OFL.TXT for more information.
+
+
+[1]: http://terminus-font.sourceforge.net/
diff --git a/config.mk b/config.mk
@@ -0,0 +1,28 @@
+#CC = cc
+#CFLAGS = -Os -Wall -pedantic -std=c99
+CFLAGS = -O2 -Wall -pedantic -std=c99
+#CFLAGS = -Og -ggdb -Wall -pedantic -std=c99
+#_CPPFLAGS = -D_DEFAULT_SOURCE -D_POSIX_C_SOURCE=200809L \
+# -D_XOPEN_SOURCE=700
+#INCLUDE = -I/usr/include
+# OpenBSD
+_CPPFLAGS = -D_DEFAULT_SOURCE -D_POSIX_C_SOURCE=200809L \
+ -D_XOPEN_SOURCE=700 -D_BSD_SOURCE
+INCLUDE = -I/usr/local/include
+INSTALL = install
+LIBS = -lSDL3_image -lSDL3 -lm
+SRC = linije.c
+HEADERS = local.h
+OBJS = linije.o
+PREFIX = /usr/local
+PROG = linije
+
+# Derived macros
+BINDIR = $(PREFIX)/bin
+CPPFLAGS = $(_CPPFLAGS) $(INCLUDE)
+DATADIR = $(PREFIX)/share/$(PROG)
+DOCDIR = $(PREFIX)/share/doc/$(PROG)
+#MANPREFIX = $(PREFIX)/share/man
+# OpenBSD
+MANPREFIX = $(PREFIX)/man
+#MANPAGE = $(PROG).1
diff --git a/cscope.out b/cscope.out
@@ -0,0 +1,20875 @@
+cscope 15 $HOME/src/linije 0000112612
+ @linije.c
+
+5
+ ~<SDL3/SDL.h
+>
+
+6
+ ~<SDL3_image/SDL_image.h
+>
+
+7
+ ~<as£¹.h
+>
+
+8
+ ~<Ӽo.h
+>
+
+9
+ ~<m©h.h
+>
+
+10
+ ~<¡d¬g.h
+>
+
+11
+ ~<¡dio.h
+>
+
+12
+ ~<¡dlib.h
+>
+
+13
+ ~<time.h
+>
+
+14
+ ~<uni¡d.h
+>
+
+16
+ ~"loÿl.h
+"
+
+17
+ ~"v”siÚ.h
+"
+
+20
+ #ANIM_SPEED
+ 100
+
+ )
+
+23
+ #FPS
+ 60
+
+ )
+
+24
+ #ANIM_STEPS
+ (
+ANIM_SPEED
+ *
+FPS
+ / 1000)
+
+ )
+
+26
+ #BUFSIZE
+ 4096
+
+ )
+
+27
+ #CELL_SIZE
+ 20
+
+ )
+
+28
+ #DEFAULT_WIDTH
+ 1280
+
+ )
+
+29
+ #DEFAULT_HEIGHT
+ 720
+
+ )
+
+30
+ #HELP_DIALOG_WIDTH
+ 900
+
+ )
+
+31
+ #HELP_DIALOG_HEIGHT
+ 450
+
+ )
+
+32
+ #GRID_WIDTH
+ 15
+
+ )
+
+33
+ #GRID_HEIGHT
+ 15
+
+ )
+
+34
+ #LOCATION_STACK_MAX
+ (
+GRID_WIDTH
+ *
+GRID_HEIGHT
+)
+
+ )
+
+35
+ #MIN_POP_LEN
+ 5
+
+ )
+
+37
+ #POP_STRING_CELL_VALUE
+ 100
+
+ )
+
+40
+ #PRINT_BUFSIZE
+ 4096
+
+ )
+
+41
+ #PROGNAME
+ "lšije"
+
+ )
+
+42
+ #TER12_WIDTH
+ 6
+
+ )
+
+43
+ #TER12_HEIGHT
+ 12
+
+ )
+
+44
+ #WIN_TITLE
+ "Lšije"
+
+ )
+
+46
+ #MIN
+(
+a
+,
+b
+è((×è< (b)è? (aè: (b))
+
+ )
+
+47
+ #MAX
+(
+a
+,
+b
+è((×è> (b)è? (aè: (b))
+
+ )
+
+48
+ #INDEX
+(
+x
+,
+y
+è((yè*
+GRID_WIDTH
+ + (x))
+
+ )
+
+49
+ #INDEXFI
+(
+x
+,
+y
+è((()
+ `æoÜ
+(y)è*
+GRID_WIDTH
+ + (()æoÜ(x)))
+
+ )
+
+50
+ #VALNAME
+(
+n
+è[n] = #n
+
+ )
+
+54
+ mCELL_EMPTY
+,
+
+55
+ mCELL_RED
+,
+
+56
+ mCELL_BLUE
+,
+
+57
+ mCELL_GREEN
+,
+
+58
+ mCELL_PURPLE
+,
+
+59
+ mCELL_ORANGE
+,
+
+60
+ mCELL_SELECTED
+
+
+64
+ mSTATE_IDLE
+,
+
+65
+ mSTATE_SELECTION
+,
+
+66
+ mSTATE_MOVING
+,
+
+67
+ mSTATE_FAILURE
+,
+
+68
+ mSTATE_SUCCESS
+
+
+71 cÚ¡ *
+ gûÎ_Çmes
+[] = {
+
+72
+VALNAME
+(
+CELL_EMPTY
+),
+
+73
+VALNAME
+(
+CELL_RED
+),
+
+74
+VALNAME
+(
+CELL_BLUE
+),
+
+75
+VALNAME
+(
+CELL_GREEN
+),
+
+76
+VALNAME
+(
+CELL_PURPLE
+),
+
+77
+VALNAME
+(
+CELL_ORANGE
+),
+
+78
+VALNAME
+(
+CELL_SELECTED
+),
+
+81 cÚ¡
+ gcheck_five_d–�s
+[][4] = {
+
+88 cÚ¡ *
+ g¡©e_desü�tiÚs
+[] = {
+
+96 cÚ¡ *
+ gh–p_‹xt
+[] = {
+
+99 "V”siÚ "
+VERSION
+,
+
+111
+NULL
+
+
+115
+ sAnim©iÚS�‹
+ {
+
+116
+SDL_FPošt
+
+ m¡¬t
+;
+
+117
+SDL_FPošt
+
+ mpos™iÚ
+;
+
+118
+SDL_FPošt
+
+ m’d
+;
+
+119
+SDL_FPošt
+
+ md–�
+;
+
+120
+ maùive
+;
+
+121
+ m¡•
+;
+
+122
+ mfš®_¡•
+;
+
+125
+ sC–l
+ {
+
+126
+ mem±y
+;
+
+127
+ m¡¬tšg
+;
+
+128
+ m’dšg
+;
+
+129
+ m·th
+;
+
+130
+SDL_FPošt
+
+ mcoÜds
+;
+
+131
+ mcÚ‹Ás
+;
+
+132
+C–l
+*
+ mËá
+;
+
+133
+C–l
+*
+ mup
+;
+
+134
+C–l
+*
+ mright
+;
+
+135
+C–l
+*
+ mdown
+;
+
+136
+C–l
+*
+ m·th_sourû
+;
+
+137
+C–l
+*
+ m·th_Ãxt
+;
+
+138
+ m·th_di¡
+;
+
+141
+ sS�‹
+ {
+
+142
+Anim©iÚS�‹
+
+ mªim©iÚ
+;
+
+143
+C–l
+*
+ mgrid
+;
+
+144
+ mloÿtiÚ_poš‹r
+;
+
+145
+SDL_Pošt
+*
+ mloÿtiÚ_¡ack
+;
+
+146
+SDL_FPošt
+
+ mpoš‹r
+;
+
+147
+ mûÎ_sÿË_çùÜ
+;
+
+148
+ mdi¥Ïy_width
+;
+
+149
+ mdi¥Ïy_height
+;
+
+150
+ mfuÎ_sü“n
+;
+
+151
+ mh–p_shown
+;
+
+152
+ mmode
+;
+
+153
+C–l
+*
+ m·th_¡¬t
+;
+
+154
+C–l
+*
+ m·th_’d
+;
+
+155
+ m»d¿w
+;
+
+156
+SDL_R’d””
+*
+ m»nd””
+;
+
+157
+ mrušg
+;
+
+158
+ msü“n_width
+;
+
+159
+ msü“n_height
+;
+
+160
+ mscÜe
+;
+
+161
+SDL_FPošt
+
+ m£ËùiÚ_¡¬t
+,
+ m£ËùiÚ_’d
+;
+
+162
+SDL_Textu»
+*
+ m¥r™es
+;
+
+163
+SDL_Textu»
+*
+ m‹r12_‹xtu»
+;
+
+164
+SDL_Textu»
+*
+ mbackground
+;
+
+165
+SDL_Wšdow
+*
+ mwšdow
+;
+
+166
+ m‹xt_sÿË_çùÜ
+;
+
+169
+assign_poštFF
+(cÚ¡
+SDL_FPošt
+*
+äom
+, SDL_FPošt*
+to
+);
+
+170
+assign_poštIF
+(cÚ¡
+SDL_Pošt
+*
+äom
+,
+SDL_FPošt
+*
+to
+);
+
+171
+assign_pošt_xyIF
+(cÚ¡
+x
+, cÚ¡
+y
+,
+SDL_FPošt
+*
+to
+);
+
+172
+ÿlcuÏ‹_d–�
+(
+S�‹
+*
+¡©e
+);
+
+173
+ÿlcuÏ‹_grid_Üigš
+(cÚ¡
+S�‹
+*
+¡©e
+, *
+sx
+, *
+sy
+);
+
+174
+ÿlcuÏ‹_di¥Ïy_size
+(
+S�‹
+*
+¡©e
+);
+
+175
+check_five
+(
+S�‹
+*
+¡©e
+,
+C–l
+*
+c
+);
+
+176
+þ—nup
+(
+S�‹
+*
+¡©e
+);
+
+177
+do_ex™
+(cÚ¡
+code
+,
+S�‹
+*
+¡©e
+);
+
+178
+d¿w
+(
+S�‹
+*
+¡©e
+);
+
+179
+d¿w_background
+(
+S�‹
+*
+¡©e
+,
+SDL_FReù
+*
+bg_»ù
+);
+
+180
+d¿w_h–p_dŸlog
+(
+S�‹
+*
+¡©e
+);
+
+181
+d¿w_‹xt
+(
+S�‹
+*
+¡©e
+, cÚ¡
+x
+, cÚ¡
+y
+,
+
+182 cÚ¡
+fÚt_width
+, cÚ¡
+fÚt_height
+,
+SDL_Textu»
+*
+fÚt_‹x
+,
+
+183 cÚ¡ *
+‹xt
+, ...);
+
+184
+fžl_Œ�Ët
+(
+S�‹
+*
+¡©e
+);
+
+185
+fšd_shÜ‹¡_·th
+(
+C–l
+*
+c
+, C–l*
+sourû
+, cÚ¡
+di¡
+);
+
+186
+g‘_¥r™e_xy
+(cÚ¡
+ûÎ
+, *
+x
+, *
+y
+);
+
+187
+grid_coÜd_to_sü“n_coÜd
+(cÚ¡
+S�‹
+*
+¡©e
+, cÚ¡
+x
+,
+
+188 cÚ¡
+y
+, cÚ¡
+¡¬tx
+, cÚ¡
+¡¬ty
+, *
+to_x
+,
+
+189 *
+to_y
+);
+
+190
+grid_coÜd_to_sü“n_coÜdF
+(cÚ¡
+S�‹
+*
+¡©e
+, cÚ¡
+x
+,
+
+191 cÚ¡
+y
+, cÚ¡
+¡¬tx
+, cÚ¡
+¡¬ty
+, *
+to_x
+,
+
+192 *
+to_y
+);
+
+193
+hªdË_þick
+(
+S�‹
+*
+¡©e
+);
+
+194
+hªdË_ev’t
+(
+S�‹
+*
+¡©e
+,
+SDL_Ev’t
+*
+ev’t
+);
+
+195
+š™_ûÎ
+(
+C–l
+*
+c
+, cÚ¡
+SDL_FPošt
+*
+coÜds
+);
+
+196
+š™_¡©e
+(
+S�‹
+*
+¡©e
+);
+
+197
+lßd_‹xtu»s
+(
+S�‹
+*
+¡©e
+);
+
+198
+loÿtiÚ_pÝ
+(
+S�‹
+*
+¡©e
+,
+SDL_Pošt
+*
+loÿtiÚ
+);
+
+199
+loÿtiÚ_push
+(
+S�‹
+*
+¡©e
+, cÚ¡
+SDL_Pošt
+*
+loÿtiÚ
+);
+
+200
+m¬k_·th
+(
+C–l
+*
+c
+);
+
+201
+Ãxt_¡•
+(
+S�‹
+*
+¡©e
+);
+
+202
+·s§bË
+(cÚ¡
+S�‹
+*
+¡©e
+, cÚ¡
+x
+, cÚ¡
+y
+);
+
+203
+´št_m©rix
+(cÚ¡
+C–l
+*
+M
+);
+
+204
+´št_·th
+(
+C–l
+*
+c
+);
+
+205
+ȣt
+(
+S�‹
+*
+¡©e
+);
+
+206
+»£t_·th
+(
+C–l
+*
+grid
+);
+
+207
+sü“n_coÜd_to_grid_coÜd
+(
+S�‹
+*
+¡©e
+, cÚ¡
+x
+, cÚ¡
+y
+,
+
+208 cÚ¡
+¡¬tx
+, cÚ¡
+¡¬ty
+, *
+to_x
+, *
+to_y
+);
+
+209
+sü“n_coÜd_to_grid_coÜdF
+(
+S�‹
+*
+¡©e
+, cÚ¡
+x
+,
+
+210 cÚ¡
+y
+, cÚ¡
+¡¬tx
+, cÚ¡
+¡¬ty
+, *
+to_x
+,
+
+211 *
+to_y
+);
+
+212
+¡•_ªim©iÚ
+(
+S�‹
+*
+¡©e
+);
+
+213
+SDL_Surçû
+*
+Œy_lßd
+(cÚ¡ *
+fž’ame
+);
+
+216
+ $assign_poštFF
+(cÚ¡
+SDL_FPošt
+*
+äom
+, SDL_FPošt*
+to
+)
+
+218
+ `as£¹
+((
+äom
+ !ð
+NULL
+è&& (
+to
+ != NULL));
+
+219
+to
+->
+x
+ = ()
+äom
+->x;
+
+220
+to
+->
+y
+ = ()
+äom
+->y;
+
+221
+ }
+}
+
+224
+ $assign_poštIF
+(cÚ¡
+SDL_Pošt
+*
+äom
+,
+SDL_FPošt
+*
+to
+)
+
+226
+ `as£¹
+((
+äom
+ !ð
+NULL
+è&& (
+to
+ != NULL));
+
+227
+to
+->
+x
+ = ()
+äom
+->x;
+
+228
+to
+->
+y
+ = ()
+äom
+->y;
+
+229
+ }
+}
+
+232
+ $assign_pošt_xyIF
+(cÚ¡
+x
+, cÚ¡
+y
+,
+SDL_FPošt
+*
+to
+)
+
+234
+ `as£¹
+(
+to
+ !ð
+NULL
+);
+
+235
+to
+->
+x
+ = ()x;
+
+236
+to
+->
+y
+ = ()y;
+
+237
+ }
+}
+
+240
+ $ÿlcuÏ‹_d–�
+(
+S�‹
+*
+¡©e
+)
+
+242
+Anim©iÚS�‹
+*
+ªim©iÚ
+;
+
+244
+ `as£¹
+(
+¡©e
+ !ð
+NULL
+);
+
+245
+ªim©iÚ
+ = &
+¡©e
+->animation;
+
+246
+ªim©iÚ
+->
+d–�
+.
+x
+
+
+247 ð
+ `çbsf
+(
+ªim©iÚ
+->
+’d
+.
+x
+ -‡nim©iÚ->
+¡¬t
+.xè/
+ANIM_STEPS
+;
+
+248 ià(
+ªim©iÚ
+->
+’d
+.
+x
+ <‡nim©iÚ->
+¡¬t
+.x)
+
+249
+ªim©iÚ
+->
+d–�
+.
+x
+ *= -1;
+
+250
+ªim©iÚ
+->
+d–�
+.
+y
+
+
+251 ð
+ `çbsf
+(
+ªim©iÚ
+->
+’d
+.
+y
+ -‡nim©iÚ->
+¡¬t
+.yè/
+ANIM_STEPS
+;
+
+252 ià(
+ªim©iÚ
+->
+’d
+.
+y
+ <‡nim©iÚ->
+¡¬t
+.y)
+
+253
+ªim©iÚ
+->
+d–�
+.
+y
+ *= -1;
+
+254
+ `SDL_LogDebug
+(
+SDL_LOG_CATEGORY_APPLICATION
+,
+
+255 "ÿlcuÏ‹_d–�: (%0.2f, %0.2f)",
+ªim©iÚ
+->
+d–�
+.
+x
+,
+
+256
+ªim©iÚ
+->
+d–�
+.
+y
+);
+
+257
+ }
+}
+
+260
+ $ÿlcuÏ‹_grid_Üigš
+(cÚ¡
+S�‹
+*
+¡©e
+, *
+sx
+, *
+sy
+)
+
+262
+cx
+,
+cy
+;
+
+264
+ `as£¹
+((
+¡©e
+ !ð
+NULL
+è&& (
+sx
+ !ðNULLè&& (
+sy
+ != NULL));
+
+265
+cx
+ =
+¡©e
+->
+sü“n_width
+ / 2;
+
+266
+cy
+ =
+¡©e
+->
+sü“n_height
+ / 2;
+
+268 *
+sx
+ =
+cx
+ - (
+¡©e
+->
+ûÎ_sÿË_çùÜ
+ *
+GRID_WIDTH
+ *
+CELL_SIZE
+) / 2;
+
+269 *
+sy
+ =
+cy
+ - (
+¡©e
+->
+ûÎ_sÿË_çùÜ
+ *
+GRID_HEIGHT
+ *
+CELL_SIZE
+) / 2;
+
+270
+ }
+}
+
+273
+ $ÿlcuÏ‹_di¥Ïy_size
+(
+S�‹
+*
+¡©e
+)
+
+275
+ `as£¹
+(
+¡©e
+ !ð
+NULL
+);
+
+276 ià(!
+ `SDL_G‘R’d”Ou�utSize
+(
+¡©e
+->
+»nd””
+, &¡©e->
+di¥Ïy_width
+,
+
+277 &
+¡©e
+->
+di¥Ïy_height
+))
+
+279
+ `SDL_LogE¼Ü
+(
+SDL_LOG_CATEGORY_ERROR
+,
+
+281
+ `do_ex™
+(1,
+¡©e
+);
+
+283
+ `SDL_LogDebug
+(
+SDL_LOG_CATEGORY_APPLICATION
+,
+
+284 "ou�uˆdi¥Ïy size: (%d, %d)",
+¡©e
+->
+di¥Ïy_width
+,
+
+285
+¡©e
+->
+di¥Ïy_height
+);
+
+286
+ }
+}
+
+289
+ $check_five
+(
+S�‹
+*
+¡©e
+,
+C–l
+*
+c
+)
+
+291
+C–l
+*
+cu¼’t
+ =
+NULL
+;
+
+292
+SDL_FPošt
+
+¡¬t
+,
+’d
+;
+
+293
+x
+,
+y
+,
+Ën
+;
+
+294
+i
+;
+
+296
+i
+ = 0;
+
+297
+check_five_loÝ
+:
+
+298
+ `assign_poštFF
+(&
+c
+->
+coÜds
+, &
+¡¬t
+);
+
+299
+ `assign_poštFF
+(&
+c
+->
+coÜds
+, &
+’d
+);
+
+300
+x
+ =
+c
+->
+coÜds
+.x;
+
+301
+y
+ =
+c
+->
+coÜds
+.y;
+
+302
+ `SDL_LogDebug
+(
+SDL_LOG_CATEGORY_APPLICATION
+, "Deltas: %d, %d",
+
+303
+check_five_d–�s
+[
+i
+][0], check_five_deltas[i][1]);
+
+304
+Ën
+ = 1;
+
+305 (
+x
+ >ð0 &&
+y
+ >ð0è&& (x <
+GRID_WIDTH
+ && y <
+GRID_HEIGHT
+))
+
+307
+ `SDL_LogDebug
+(
+SDL_LOG_CATEGORY_APPLICATION
+, "Aˆ(%d, %d): %s",
+x
+,
+
+308
+y
+,
+ûÎ_Çmes
+[
+¡©e
+->
+grid
+[
+ `INDEX
+(
+x
+, y)].
+cÚ‹Ás
+]);
+
+309 ià(
+¡©e
+->
+grid
+[
+ `INDEX
+(
+x
+,
+y
+)].
+cÚ‹Ás
+ =ð
+c
+->contents)
+
+311
+ `assign_pošt_xyIF
+(
+x
+,
+y
+, &
+¡¬t
+);
+
+312
+Ën
+++;
+
+316
+x
+ +ð
+check_five_d–�s
+[
+i
+][0];
+
+317
+y
+ +ð
+check_five_d–�s
+[
+i
+][1];
+
+319
+x
+ =
+c
+->
+coÜds
+.x +
+check_five_d–�s
+[
+i
+][2];
+
+320
+y
+ =
+c
+->
+coÜds
+.y +
+check_five_d–�s
+[
+i
+][3];
+
+321
+ `SDL_LogDebug
+(
+SDL_LOG_CATEGORY_APPLICATION
+, "Deltas: %d, %d",
+
+322
+check_five_d–�s
+[
+i
+][2], check_five_deltas[i][3]);
+
+323 (
+x
+ >ð0 &&
+y
+ >ð0è&& (x <
+GRID_WIDTH
+ && y <
+GRID_HEIGHT
+))
+
+325
+ `SDL_LogDebug
+(
+SDL_LOG_CATEGORY_APPLICATION
+, "Aˆ(%d, %d): %s",
+x
+,
+
+326
+y
+,
+ûÎ_Çmes
+[
+¡©e
+->
+grid
+[
+ `INDEX
+(
+x
+, y)].
+cÚ‹Ás
+]);
+
+327 ià(
+¡©e
+->
+grid
+[
+ `INDEX
+(
+x
+,
+y
+)].
+cÚ‹Ás
+ =ð
+c
+->contents)
+
+329
+ `assign_pošt_xyIF
+(
+x
+,
+y
+, &
+’d
+);
+
+330
+Ën
+++;
+
+334
+x
+ +ð
+check_five_d–�s
+[
+i
+][2];
+
+335
+y
+ +ð
+check_five_d–�s
+[
+i
+][3];
+
+337 ià(
+Ën
+ >
+MIN_POP_LEN
+)
+
+339
+ `SDL_LogDebug
+(
+SDL_LOG_CATEGORY_APPLICATION
+,
+
+342
+¡¬t
+.
+x
+, s�¹.
+y
+,
+’d
+.x,ƒnd.y);
+
+344
+ `SDL_LogDebug
+(
+SDL_LOG_CATEGORY_APPLICATION
+,
+
+346
+¡¬t
+.
+y
+,
+’d
+.y,
+check_five_d–�s
+[
+i
+][3],
+
+347
+check_five_d–�s
+[
+i
+][3]);
+
+348
+ `SDL_LogDebug
+(
+SDL_LOG_CATEGORY_APPLICATION
+,
+
+350
+¡¬t
+.
+x
+,
+’d
+.x,
+check_five_d–�s
+[
+i
+][2],
+
+351
+check_five_d–�s
+[
+i
+][2]);
+
+352
+x
+ =
+¡¬t
+.x;
+
+353
+y
+ =
+¡¬t
+.y;
+
+356
+cu¼’t
+ = &
+¡©e
+->
+grid
+[
+ `INDEX
+(
+x
+,
+y
+)];
+
+357
+ `SDL_LogDebug
+(
+SDL_LOG_CATEGORY_APPLICATION
+,
+
+359
+cu¼’t
+->
+coÜds
+.
+x
+,
+
+360
+cu¼’t
+->
+coÜds
+.
+y
+,
+
+361
+x
+,
+y
+,
+
+362
+ûÎ_Çmes
+[
+cu¼’t
+->
+cÚ‹Ás
+]);
+
+363
+cu¼’t
+->
+cÚ‹Ás
+ =
+CELL_EMPTY
+;
+
+364
+cu¼’t
+->
+em±y
+ = 1;
+
+365
+ `SDL_LogDebug
+(
+SDL_LOG_CATEGORY_APPLICATION
+,
+
+367
+cu¼’t
+->
+coÜds
+.
+x
+,
+
+368
+cu¼’t
+->
+coÜds
+.
+y
+,
+
+369
+ûÎ_Çmes
+[
+cu¼’t
+->
+cÚ‹Ás
+]);
+
+370
+x
+ +ð
+check_five_d–�s
+[
+i
+][2];
+
+371
+y
+ +ð
+check_five_d–�s
+[
+i
+][3];
+
+373 !((
+x
+ =ð
+’d
+.x +
+check_five_d–�s
+[
+i
+][2])
+
+374 && (
+y
+ =ð
+’d
+.y +
+check_five_d–�s
+[
+i
+][3])));
+
+376
+¡©e
+->
+scÜe
+ +ð
+Ën
+ *
+POP_STRING_CELL_VALUE
+;
+
+377
+check_five_fšish
+;
+
+381
+ `SDL_LogDebug
+(
+SDL_LOG_CATEGORY_APPLICATION
+,
+
+382 "check_five:†’ = %d,‚Ù…Ýpšg",
+Ën
+);
+
+384
+i
+++;
+
+385 ià(
+i
+ < (
+check_five_d–�s
+) / (check_five_deltas[0]))
+
+386
+check_five_loÝ
+;
+
+388
+ `fžl_Œ�Ët
+(
+¡©e
+);
+
+390
+check_five_fšish
+:
+
+391
+¡©e
+->
+mode
+ =
+STATE_IDLE
+;
+
+392
+ }
+}
+
+395
+ $þ—nup
+(
+S�‹
+*
+¡©e
+)
+
+397
+ `as£¹
+(
+¡©e
+ !ð
+NULL
+);
+
+399
+ `ä“
+(
+¡©e
+->
+loÿtiÚ_¡ack
+);
+
+400
+ `ä“
+(
+¡©e
+->
+grid
+);
+
+402 ià(
+¡©e
+->
+background
+)
+
+403
+ `SDL_De¡royTextu»
+(
+¡©e
+->
+background
+);
+
+404 ià(
+¡©e
+->
+‹r12_‹xtu»
+)
+
+405
+ `SDL_De¡royTextu»
+(
+¡©e
+->
+‹r12_‹xtu»
+);
+
+406 ià(
+¡©e
+->
+¥r™es
+)
+
+407
+ `SDL_De¡royTextu»
+(
+¡©e
+->
+¥r™es
+);
+
+408 ià(
+¡©e
+->
+»nd””
+)
+
+409
+ `SDL_De¡royR’d””
+(
+¡©e
+->
+»nd””
+);
+
+410 ià(
+¡©e
+->
+wšdow
+)
+
+411
+ `SDL_De¡royWšdow
+(
+¡©e
+->
+wšdow
+);
+
+413
+ `SDL_Qu™
+();
+
+414
+ }
+}
+
+417
+ $do_ex™
+(cÚ¡
+code
+,
+S�‹
+*
+¡©e
+)
+
+419
+ `þ—nup
+(
+¡©e
+);
+
+420
+ `ex™
+(
+code
+);
+
+421
+ }
+}
+
+424
+ $d¿w
+(
+S�‹
+*
+¡©e
+)
+
+426
+C–l
+*
+c
+ =
+NULL
+;
+
+427
+SDL_FReù
+
+bg_»ù
+,
+ûÎ_»ù
+;
+
+428
+SDL_FReù
+
+de¡_»ù
+;
+
+429
+x
+,
+y
+;
+
+430
+üx
+,
+üy
+;
+
+431
+drx
+,
+dry
+;
+
+432
+¡¬tx
+,
+¡¬ty
+;
+
+434
+ `as£¹
+(
+¡©e
+ !ð
+NULL
+);
+
+435
+ `as£¹
+(
+¡©e
+->
+ûÎ_sÿË_çùÜ
+ != 0.0f);
+
+437
+ `ÿlcuÏ‹_grid_Üigš
+(
+¡©e
+, &
+¡¬tx
+, &
+¡¬ty
+);
+
+439
+bg_»ù
+.
+x
+ = 0;
+
+440
+bg_»ù
+.
+y
+ = 0;
+
+441
+bg_»ù
+.
+w
+ =
+¡©e
+->
+ûÎ_sÿË_çùÜ
+ * (
+CELL_SIZE
+ *
+GRID_WIDTH
+ + 1);
+
+442
+bg_»ù
+.
+h
+ =
+¡©e
+->
+ûÎ_sÿË_çùÜ
+ * (
+CELL_SIZE
+ *
+GRID_HEIGHT
+ + 1);
+
+444
+ `SDL_S‘R’d”D¿wCÞÜ
+(
+¡©e
+->
+»nd””
+, 0, 0, 0,
+SDL_ALPHA_OPAQUE
+);
+
+445
+ `SDL_R’d”Cˬ
+(
+¡©e
+->
+»nd””
+);
+
+448 ià(!
+¡©e
+->
+background
+)
+
+449
+ `d¿w_background
+(
+¡©e
+, &
+bg_»ù
+);
+
+452
+de¡_»ù
+.
+x
+ =
+¡¬tx
+;
+
+453
+de¡_»ù
+.
+y
+ =
+¡¬ty
+;
+
+454
+de¡_»ù
+.
+w
+ =
+bg_»ù
+.w;
+
+455
+de¡_»ù
+.
+h
+ =
+bg_»ù
+.h;
+
+456
+ `SDL_R’d”Lše
+(
+¡©e
+->
+»nd””
+, 1, 1, 50, 50);
+
+457
+ `SDL_R’d”Textu»
+(
+¡©e
+->
+»nd””
+, s�‹->
+background
+, &
+bg_»ù
+,
+
+458 &
+de¡_»ù
+);
+
+461
+ûÎ_»ù
+.
+w
+ =
+CELL_SIZE
+;
+
+462
+ûÎ_»ù
+.
+h
+ =
+CELL_SIZE
+;
+
+463
+de¡_»ù
+.
+w
+ =
+¡©e
+->
+ûÎ_sÿË_çùÜ
+ *
+CELL_SIZE
+;
+
+464
+de¡_»ù
+.
+h
+ =
+¡©e
+->
+ûÎ_sÿË_çùÜ
+ *
+CELL_SIZE
+;
+
+465
+y
+ = 0; y <
+GRID_HEIGHT
+; y++)
+
+466
+x
+ = 0; x <
+GRID_WIDTH
+; x++)
+
+468
+c
+ = &
+¡©e
+->
+grid
+[
+ `INDEX
+(
+x
+,
+y
+)];
+
+469 ià(
+c
+->
+cÚ‹Ás
+ =ð
+CELL_EMPTY
+)
+
+472
+ `g‘_¥r™e_xy
+(
+c
+->
+cÚ‹Ás
+, &
+üx
+, &
+üy
+);
+
+473
+ûÎ_»ù
+.
+x
+ =
+üx
+;
+
+474
+ûÎ_»ù
+.
+y
+ =
+üy
+;
+
+475 ià(
+c
+->
+·th
+)
+
+477
+ `grid_coÜd_to_sü“n_coÜd
+(
+¡©e
+,
+
+478
+¡©e
+->
+ªim©iÚ
+.
+pos™iÚ
+.
+x
+,
+
+479
+¡©e
+->
+ªim©iÚ
+.
+pos™iÚ
+.
+y
+,
+¡¬tx
+ + 1,
+
+480
+¡¬ty
+ + 1, &
+drx
+, &
+dry
+);
+
+484
+ `grid_coÜd_to_sü“n_coÜd
+(
+¡©e
+,
+x
+,
+y
+,
+
+485
+¡¬tx
+ + 1,
+¡¬ty
+ + 1, &
+drx
+, &
+dry
+);
+
+487
+de¡_»ù
+.
+x
+ =
+drx
+;
+
+488
+de¡_»ù
+.
+y
+ =
+dry
+;
+
+489
+ `SDL_R’d”Textu»
+(
+¡©e
+->
+»nd””
+, s�‹->
+¥r™es
+,
+
+490 &
+ûÎ_»ù
+, &
+de¡_»ù
+);
+
+494 ià(
+¡©e
+->
+£ËùiÚ_¡¬t
+.
+x
+ != -1)
+
+496
+ `g‘_¥r™e_xy
+(
+CELL_SELECTED
+, &
+üx
+, &
+üy
+);
+
+497
+ûÎ_»ù
+.
+x
+ =
+üx
+;
+
+498
+ûÎ_»ù
+.
+y
+ =
+üy
+;
+
+499
+ `grid_coÜd_to_sü“n_coÜd
+(
+¡©e
+, s�‹->
+£ËùiÚ_¡¬t
+.
+x
+,
+
+500
+¡©e
+->
+£ËùiÚ_¡¬t
+.
+y
+,
+¡¬tx
+ + 1,
+¡¬ty
+ + 1, &
+drx
+,
+
+501 &
+dry
+);
+
+502
+de¡_»ù
+.
+x
+ =
+drx
+;
+
+503
+de¡_»ù
+.
+y
+ =
+dry
+;
+
+504
+ `SDL_R’d”Textu»
+(
+¡©e
+->
+»nd””
+, s�‹->
+¥r™es
+, &
+ûÎ_»ù
+,
+
+505 &
+de¡_»ù
+);
+
+509
+ `d¿w_‹xt
+(
+¡©e
+, 0,
+
+510
+¡©e
+->
+sü“n_height
+ - s�‹->
+‹xt_sÿË_çùÜ
+ *
+TER12_HEIGHT
+,
+
+511
+TER12_WIDTH
+,
+TER12_HEIGHT
+,
+¡©e
+->
+‹r12_‹xtu»
+,
+
+512 "ScÜe: %06u F1 = H–° S�tus: %s",
+¡©e
+->
+scÜe
+,
+
+513
+¡©e_desü�tiÚs
+[
+¡©e
+->
+mode
+]);
+
+515 ià(
+¡©e
+->
+h–p_shown
+)
+
+516
+ `d¿w_h–p_dŸlog
+(
+¡©e
+);
+
+522
+ `SDL_R’d”P»£Á
+(
+¡©e
+->
+»nd””
+);
+
+523
+ }
+}
+
+526
+ $d¿w_background
+(
+S�‹
+*
+¡©e
+,
+SDL_FReù
+*
+bg_»ù
+)
+
+528 cÚ¡
+SDL_Di¥ÏyMode
+*
+mode
+;
+
+529
+SDL_FReù
+
+ûÎ_»ù
+,
+de¡_»ù
+;
+
+530
+SDL_Di¥ÏyID
+
+di¥Ïy
+;
+
+531
+üx
+,
+üy
+;
+
+532
+drx
+,
+dry
+;
+
+533
+x
+,
+y
+;
+
+535
+ `as£¹
+((
+¡©e
+ !ð
+NULL
+è&& (
+bg_»ù
+ != NULL));
+
+536
+ `as£¹
+(
+¡©e
+->
+ûÎ_sÿË_çùÜ
+ != 0.0f);
+
+538 ià((
+di¥Ïy
+ =
+ `SDL_G‘Di¥ÏyFÜWšdow
+(
+¡©e
+->
+wšdow
+)) == 0)
+
+540
+ `SDL_LogE¼Ü
+(
+SDL_LOG_CATEGORY_ERROR
+,
+
+541 "SDL_G‘Di¥ÏyFÜWšdow fažed: %s",
+ `SDL_G‘E¼Ü
+());
+
+542
+ `do_ex™
+(1,
+¡©e
+);
+
+545 ià((
+mode
+ =
+ `SDL_G‘Cu¼’tDi¥ÏyMode
+(
+di¥Ïy
+)è=ð
+NULL
+)
+
+547
+ `SDL_LogE¼Ü
+(
+SDL_LOG_CATEGORY_ERROR
+,
+
+548 "SDL_G‘Cu¼’tDi¥ÏyMod�çžed: %s",
+ `SDL_G‘E¼Ü
+());
+
+549
+ `do_ex™
+(1,
+¡©e
+);
+
+552
+¡©e
+->
+background
+ =
+ `SDL_C»©eTextu»
+(¡©e->
+»nd””
+,
+mode
+->
+fÜm©
+,
+
+553
+SDL_TEXTUREACCESS_TARGET
+,
+bg_»ù
+->
+w
+, bg_»ù->
+h
+);
+
+554 ià(!
+¡©e
+->
+background
+)
+
+556
+ `SDL_LogE¼Ü
+(
+SDL_LOG_CATEGORY_ERROR
+,
+
+557 "SDL_C»©eTextu» fažed: %s",
+ `SDL_G‘E¼Ü
+());
+
+558
+ `do_ex™
+(1,
+¡©e
+);
+
+560 ià(!
+ `SDL_S‘R’d”T¬g‘
+(
+¡©e
+->
+»nd””
+, s�‹->
+background
+))
+
+562
+ `SDL_LogE¼Ü
+(
+SDL_LOG_CATEGORY_ERROR
+,
+
+563 "SDL_S‘R’d”T¬g‘ fažed: %s",
+ `SDL_G‘E¼Ü
+());
+
+564
+ `do_ex™
+(1,
+¡©e
+);
+
+567
+de¡_»ù
+.
+w
+ =
+¡©e
+->
+ûÎ_sÿË_çùÜ
+ *
+CELL_SIZE
+;
+
+568
+de¡_»ù
+.
+h
+ =
+¡©e
+->
+ûÎ_sÿË_çùÜ
+ *
+CELL_SIZE
+;
+
+569
+ `g‘_¥r™e_xy
+(
+CELL_EMPTY
+, &
+üx
+, &
+üy
+);
+
+570
+ûÎ_»ù
+.
+x
+ =
+üx
+;
+
+571
+ûÎ_»ù
+.
+y
+ =
+üy
+;
+
+572
+ûÎ_»ù
+.
+w
+ =
+CELL_SIZE
+;
+
+573
+ûÎ_»ù
+.
+h
+ =
+CELL_SIZE
+;
+
+574
+y
+ = 0; y <
+GRID_HEIGHT
+; y++)
+
+575
+x
+ = 0; x <
+GRID_WIDTH
+; x++)
+
+577
+ `grid_coÜd_to_sü“n_coÜd
+(
+¡©e
+,
+x
+,
+y
+, 0.0f, 0.0f,
+
+578 &
+drx
+, &
+dry
+);
+
+579
+de¡_»ù
+.
+x
+ =
+¡©e
+->
+ûÎ_sÿË_çùÜ
+ +
+drx
+;
+
+580
+de¡_»ù
+.
+y
+ =
+¡©e
+->
+ûÎ_sÿË_çùÜ
+ +
+dry
+;
+
+581
+ `SDL_R’d”Textu»
+(
+¡©e
+->
+»nd””
+, s�‹->
+¥r™es
+,
+
+582 &
+ûÎ_»ù
+, &
+de¡_»ù
+);
+
+586
+x
+ = -1; x <
+GRID_WIDTH
+; x++)
+
+588
+ `grid_coÜd_to_sü“n_coÜd
+(
+¡©e
+,
+x
+, -1, 0.0f, 0.0f, &
+drx
+, &
+dry
+);
+
+589
+de¡_»ù
+.
+x
+ =
+¡©e
+->
+ûÎ_sÿË_çùÜ
+ +
+drx
+;
+
+590
+de¡_»ù
+.
+y
+ =
+¡©e
+->
+ûÎ_sÿË_çùÜ
+ +
+dry
+;
+
+591
+ `SDL_R’d”Textu»
+(
+¡©e
+->
+»nd””
+, s�‹->
+¥r™es
+, &
+ûÎ_»ù
+,
+
+592 &
+de¡_»ù
+);
+
+596
+y
+ = 0; y <
+GRID_WIDTH
+; y++)
+
+598
+ `grid_coÜd_to_sü“n_coÜd
+(
+¡©e
+, -1,
+y
+, 0.0f, 0.0f, &
+drx
+, &
+dry
+);
+
+599
+de¡_»ù
+.
+x
+ =
+¡©e
+->
+ûÎ_sÿË_çùÜ
+ +
+drx
+;
+
+600
+de¡_»ù
+.
+y
+ =
+¡©e
+->
+ûÎ_sÿË_çùÜ
+ +
+dry
+;
+
+601
+ `SDL_R’d”Textu»
+(
+¡©e
+->
+»nd””
+, s�‹->
+¥r™es
+, &
+ûÎ_»ù
+,
+
+602 &
+de¡_»ù
+);
+
+605
+ `SDL_S‘R’d”D¿wBËndMode
+(
+¡©e
+->
+»nd””
+,
+SDL_BLENDMODE_NONE
+);
+
+606
+ `SDL_S‘R’d”D¿wCÞÜ
+(
+¡©e
+->
+»nd””
+, 255, 255, 255,
+SDL_ALPHA_OPAQUE
+);
+
+608
+ `SDL_S‘R’d”T¬g‘
+(
+¡©e
+->
+»nd””
+,
+NULL
+);
+
+609
+ }
+}
+
+612
+ $d¿w_h–p_dŸlog
+(
+S�‹
+*
+¡©e
+)
+
+614 cÚ¡ **
+ph–p_‹xt
+ =
+h–p_‹xt
+;
+
+615
+sx
+ =
+¡©e
+->
+sü“n_width
+ / 2 -
+HELP_DIALOG_WIDTH
+ / 2;
+
+616
+sy
+ =
+¡©e
+->
+sü“n_height
+ / 2 -
+HELP_DIALOG_HEIGHT
+ / 2;
+
+617
+SDL_FReù
+
+dŸlog_»ù
+;
+
+619
+dŸlog_»ù
+.
+x
+ =
+sx
+;
+
+620
+dŸlog_»ù
+.
+y
+ =
+sy
+;
+
+621
+dŸlog_»ù
+.
+w
+ =
+HELP_DIALOG_WIDTH
+;
+
+622
+dŸlog_»ù
+.
+h
+ =
+HELP_DIALOG_HEIGHT
+;
+
+624
+ `SDL_S‘R’d”D¿wBËndMode
+(
+¡©e
+->
+»nd””
+,
+SDL_BLENDMODE_BLEND
+);
+
+625
+ `SDL_S‘R’d”D¿wCÞÜ
+(
+¡©e
+->
+»nd””
+, 0, 0, 0, .75 * 255);
+
+626
+ `SDL_R’d”FžlReù
+(
+¡©e
+->
+»nd””
+, &
+dŸlog_»ù
+);
+
+628
+ `SDL_S‘R’d”D¿wBËndMode
+(
+¡©e
+->
+»nd””
+,
+SDL_BLENDMODE_NONE
+);
+
+629
+ `SDL_S‘R’d”D¿wCÞÜ
+(
+¡©e
+->
+»nd””
+, 255, 255, 255,
+SDL_ALPHA_OPAQUE
+);
+
+630
+ `SDL_R’d”Reù
+(
+¡©e
+->
+»nd””
+, &
+dŸlog_»ù
+);
+
+631
+ `SDL_S‘R’d”D¿wCÞÜ
+(
+¡©e
+->
+»nd””
+, 0, 0, 0,
+SDL_ALPHA_OPAQUE
+);
+
+632
+dŸlog_»ù
+.
+x
+--;
+
+633
+dŸlog_»ù
+.
+y
+--;
+
+634
+dŸlog_»ù
+.
+w
+ += 2;
+
+635
+dŸlog_»ù
+.
+h
+ += 2;
+
+636
+ `SDL_R’d”Reù
+(
+¡©e
+->
+»nd””
+, &
+dŸlog_»ù
+);
+
+637
+dŸlog_»ù
+.
+x
+--;
+
+638
+dŸlog_»ù
+.
+y
+--;
+
+639
+dŸlog_»ù
+.
+w
+ += 2;
+
+640
+dŸlog_»ù
+.
+h
+ += 2;
+
+641
+ `SDL_R’d”Reù
+(
+¡©e
+->
+»nd””
+, &
+dŸlog_»ù
+);
+
+643 *
+ph–p_‹xt
+)
+
+645
+ `d¿w_‹xt
+(
+¡©e
+,
+
+646
+sx
+ +
+¡©e
+->
+‹xt_sÿË_çùÜ
+ * (2 *
+TER12_WIDTH
+),
+
+647
+sy
+
+
+648 + (
+ph–p_‹xt
+ -
+h–p_‹xt
+ + 1)
+
+649 *
+¡©e
+->
+‹xt_sÿË_çùÜ
+
+
+650 * (
+TER12_HEIGHT
+ + 2),
+
+651
+TER12_WIDTH
+,
+TER12_HEIGHT
+,
+¡©e
+->
+‹r12_‹xtu»
+,
+
+652 *
+ph–p_‹xt
+);
+
+653
+ph–p_‹xt
+++;
+
+655
+ }
+}
+
+658
+ $d¿w_‹xt
+(
+S�‹
+*
+¡©e
+, cÚ¡
+x
+, cÚ¡
+y
+, cÚ¡
+fÚt_width
+,
+
+659 cÚ¡
+fÚt_height
+,
+SDL_Textu»
+*
+fÚt_‹x
+, cÚ¡ *
+‹xt
+, ...)
+
+661
+buf
+[
+PRINT_BUFSIZE
+];
+
+662
+va_li¡
+
+¬gs
+;
+
+663 cÚ¡ *
+pbuf
+ =
+NULL
+;
+
+664
+x¡¬t
+ = 0;
+
+665
+y¡¬t
+ = 0;
+
+666
+SDL_FReù
+
+sourû_»ù
+;
+
+667
+SDL_FReù
+
+de¡_»ù
+;
+
+668
+šdex
+ = 0;
+
+669
+ch¬s_³r_row
+ = 0;
+
+670
+fœ¡_ch¬
+ = ' ';
+
+671
+Ï¡_ch¬
+ = '~';
+
+672
+‹x_w
+,
+‹x_h
+;
+
+674
+ `as£¹
+((
+fÚt_‹x
+ !ð
+NULL
+è&& (
+‹xt
+ != NULL));
+
+675
+ `as£¹
+(
+¡©e
+->
+‹xt_sÿË_çùÜ
+ != 0.0f);
+
+676
+ `as£¹
+(
+fÚt_width
+ != -1);
+
+678
+ `va_¡¬t
+(
+¬gs
+,
+‹xt
+);
+
+679
+ `v¢´štf
+(
+buf
+, (buf),
+‹xt
+,
+¬gs
+);
+
+680
+ `va_’d
+(
+¬gs
+);
+
+682
+sourû_»ù
+.
+w
+ =
+fÚt_width
+;
+
+683
+sourû_»ù
+.
+h
+ =
+fÚt_height
+;
+
+685
+de¡_»ù
+.
+x
+ = x;
+
+686
+de¡_»ù
+.
+y
+ = y;
+
+687
+de¡_»ù
+.
+w
+ =
+¡©e
+->
+‹xt_sÿË_çùÜ
+ *
+fÚt_width
+;
+
+688
+de¡_»ù
+.
+h
+ =
+¡©e
+->
+‹xt_sÿË_çùÜ
+ *
+fÚt_height
+;
+
+690 ià(!
+ `SDL_G‘Textu»Size
+(
+fÚt_‹x
+, &
+‹x_w
+, &
+‹x_h
+))
+
+692
+ `SDL_LogE¼Ü
+(
+SDL_LOG_CATEGORY_ERROR
+,
+
+693 "SDL_G‘Textu»Siz�çžed: %s",
+ `SDL_G‘E¼Ü
+());
+
+694
+ `do_ex™
+(1,
+¡©e
+);
+
+697
+ch¬s_³r_row
+ =
+‹x_w
+ / (
+fÚt_width
+ + 1);
+
+699
+pbuf
+ =
+buf
+;
+
+701 *
+pbuf
+)
+
+703 ià(*
+pbuf
+ >ð
+fœ¡_ch¬
+ && *pbuà<ð
+Ï¡_ch¬
+)
+
+705
+šdex
+ = ()(*
+pbuf
+ -
+fœ¡_ch¬
+);
+
+707
+x¡¬t
+ = 1 +
+šdex
+ %
+ch¬s_³r_row
+ * (
+fÚt_width
+ + 1);
+
+708
+y¡¬t
+ = 1 +
+šdex
+ /
+ch¬s_³r_row
+ * (
+fÚt_height
+ + 1);
+
+713
+sourû_»ù
+.
+x
+ =
+x¡¬t
+;
+
+714
+sourû_»ù
+.
+y
+ =
+y¡¬t
+;
+
+716
+ `SDL_R’d”Textu»
+(
+¡©e
+->
+»nd””
+,
+fÚt_‹x
+, &
+sourû_»ù
+,
+
+717 &
+de¡_»ù
+);
+
+719
+de¡_»ù
+.
+x
+ +ð
+¡©e
+->
+‹xt_sÿË_çùÜ
+ *
+fÚt_width
+;
+
+721
+pbuf
+++;
+
+724
+ }
+}
+
+727
+ $fžl_Œ�Ët
+(
+S�‹
+*
+¡©e
+)
+
+729
+x
+,
+y
+;
+
+730
+·ss
+;
+
+731
+cÞÜ
+;
+
+733
+·ss
+ = 0;
+
+734
+fžl_Œ�Ët_g’”©e
+:
+
+735
+x
+ =
+ `¿ndom
+(è%
+GRID_WIDTH
+;
+
+736
+y
+ =
+ `¿ndom
+(è%
+GRID_HEIGHT
+;
+
+737 ià(
+¡©e
+->
+grid
+[
+ `INDEX
+(
+x
+,
+y
+)].
+cÚ‹Ás
+ !ð
+CELL_EMPTY
+)
+
+738
+fžl_Œ�Ët_g’”©e
+;
+
+740
+ `¿ndom
+() % 5)
+
+743
+cÞÜ
+ =
+CELL_RED
+;
+
+746
+cÞÜ
+ =
+CELL_BLUE
+;
+
+749
+cÞÜ
+ =
+CELL_GREEN
+;
+
+752
+cÞÜ
+ =
+CELL_PURPLE
+;
+
+755
+cÞÜ
+ =
+CELL_ORANGE
+;
+
+757
+¡©e
+->
+grid
+[
+ `INDEX
+(
+x
+,
+y
+)].
+cÚ‹Ás
+ =
+cÞÜ
+;
+
+758
+¡©e
+->
+grid
+[
+ `INDEX
+(
+x
+,
+y
+)].
+em±y
+ = 0;
+
+759
+·ss
+++;
+
+760
+ `SDL_LogDebug
+(
+SDL_LOG_CATEGORY_APPLICATION
+,
+
+761 "fžl_Œ�Ët: % © (%d, %d)",
+ûÎ_Çmes
+[()
+cÞÜ
+],
+x
+,
+y
+);
+
+762 ià(
+·ss
+ < 3)
+
+763
+fžl_Œ�Ët_g’”©e
+;
+
+764
+ }
+}
+
+767
+ $fšd_shÜ‹¡_·th
+(
+C–l
+*
+c
+, C–l*
+sourû
+, cÚ¡
+di¡
+)
+
+769 ià(!
+c
+ || c->
+·th_di¡
+ <ð
+di¡
+)
+
+772 ià(!
+c
+->
+em±y
+ && !c->
+¡¬tšg
+ && !c->
+’dšg
+)
+
+775 ià(
+c
+->
+¡¬tšg
+)
+
+776
+c
+->
+·th_di¡
+ =
+di¡
+;
+
+778 ià(
+c
+->
+·th_di¡
+ >
+di¡
+)
+
+780
+c
+->
+·th_di¡
+ =
+di¡
+;
+
+781
+c
+->
+·th_sourû
+ =
+sourû
+;
+
+784 ià(
+c
+->
+’dšg
+)
+
+787
+ `fšd_shÜ‹¡_·th
+(
+c
+->
+Ëá
+, c,
+di¡
+ + 1);
+
+788
+ `fšd_shÜ‹¡_·th
+(
+c
+->
+up
+, c,
+di¡
+ + 1);
+
+789
+ `fšd_shÜ‹¡_·th
+(
+c
+->
+right
+, c,
+di¡
+ + 1);
+
+790
+ `fšd_shÜ‹¡_·th
+(
+c
+->
+down
+, c,
+di¡
+ + 1);
+
+791
+ }
+}
+
+794
+ $g‘_¥r™e_xy
+(cÚ¡
+ûÎ
+, *
+x
+, *
+y
+)
+
+796
+ `as£¹
+((
+x
+ !ð
+NULL
+è&& (
+y
+ != NULL));
+
+797
+ûÎ
+)
+
+799
+CELL_RED
+:
+
+800 *
+x
+ = 1 *
+CELL_SIZE
+;
+
+801 *
+y
+ = 0;
+
+803
+CELL_BLUE
+:
+
+804 *
+x
+ = 2 *
+CELL_SIZE
+;
+
+805 *
+y
+ = 0;
+
+807
+CELL_GREEN
+:
+
+808 *
+x
+ = 3 *
+CELL_SIZE
+;
+
+809 *
+y
+ = 0;
+
+811
+CELL_PURPLE
+:
+
+812 *
+x
+ = 4 *
+CELL_SIZE
+;
+
+813 *
+y
+ = 0;
+
+815
+CELL_ORANGE
+:
+
+816 *
+x
+ = 5 *
+CELL_SIZE
+;
+
+817 *
+y
+ = 0;
+
+819
+CELL_SELECTED
+:
+
+820 *
+x
+ = 0;
+
+821 *
+y
+ = 1 *
+CELL_SIZE
+;
+
+824 *
+x
+ = 0;
+
+825 *
+y
+ = 0;
+
+829
+ }
+}
+
+832
+ $grid_coÜd_to_sü“n_coÜd
+(cÚ¡
+S�‹
+*
+¡©e
+, cÚ¡
+x
+, cÚ¡
+y
+,
+
+833 cÚ¡
+¡¬tx
+, cÚ¡
+¡¬ty
+, *
+to_x
+, *
+to_y
+)
+
+835
+ `as£¹
+((
+¡©e
+ !ð
+NULL
+è&& (
+to_x
+ !ðNULLè&& (
+to_y
+ != NULL));
+
+836 *
+to_x
+ =
+¡¬tx
+ +
+x
+ *
+¡©e
+->
+ûÎ_sÿË_çùÜ
+ *
+CELL_SIZE
+;
+
+837 *
+to_y
+ =
+¡¬ty
+ +
+y
+ *
+¡©e
+->
+ûÎ_sÿË_çùÜ
+ *
+CELL_SIZE
+;
+
+838
+ }
+}
+
+841
+ $grid_coÜd_to_sü“n_coÜdF
+(cÚ¡
+S�‹
+*
+¡©e
+, cÚ¡
+x
+,
+
+842 cÚ¡
+y
+, cÚ¡
+¡¬tx
+, cÚ¡
+¡¬ty
+, *
+to_x
+,
+
+843 *
+to_y
+)
+
+845
+ `as£¹
+((
+¡©e
+ !ð
+NULL
+è&& (
+to_x
+ !ðNULLè&& (
+to_y
+ != NULL));
+
+846 *
+to_x
+ =
+¡¬tx
+ +
+x
+ *
+¡©e
+->
+ûÎ_sÿË_çùÜ
+ *
+CELL_SIZE
+;
+
+847 *
+to_y
+ =
+¡¬ty
+ +
+y
+ *
+¡©e
+->
+ûÎ_sÿË_çùÜ
+ *
+CELL_SIZE
+;
+
+848
+ }
+}
+
+850 *
+ gûÎ_image
+[] = {"[ ]", "[R]", "[B]", "[G]", "[P]", "[O]", "[/]",
+
+853
+ #CELL_START
+ 7
+
+ )
+
+854
+ #CELL_END
+ 8
+
+ )
+
+855
+ #CELL_PATH
+ 9
+
+ )
+
+858
+ $hªdË_þick
+(
+S�‹
+*
+¡©e
+)
+
+860
+¡¬tx
+,
+¡¬ty
+;
+
+862
+ `as£¹
+(
+¡©e
+ !ð
+NULL
+);
+
+863 ià(
+¡©e
+->
+mode
+ =ð
+STATE_IDLE
+)
+
+865
+ `ÿlcuÏ‹_grid_Üigš
+(
+¡©e
+, &
+¡¬tx
+, &
+¡¬ty
+);
+
+866
+ `sü“n_coÜd_to_grid_coÜd
+(
+¡©e
+, s�‹->
+poš‹r
+.
+x
+,
+
+867
+¡©e
+->
+poš‹r
+.
+y
+,
+¡¬tx
+,
+¡¬ty
+,
+
+868 &
+¡©e
+->
+£ËùiÚ_¡¬t
+.
+x
+, &¡©e->£ËùiÚ_¡¬t.
+y
+);
+
+869
+¡©e
+->
+ªim©iÚ
+.
+¡¬t
+.
+x
+ = ()¡©e->
+£ËùiÚ_¡¬t
+.x;
+
+870
+¡©e
+->
+ªim©iÚ
+.
+¡¬t
+.
+y
+ = ()¡©e->
+£ËùiÚ_¡¬t
+.y;
+
+871
+¡©e
+->
+ªim©iÚ
+.
+pos™iÚ
+.
+x
+ = s�‹->ªim©iÚ.
+¡¬t
+.x;
+
+872
+¡©e
+->
+ªim©iÚ
+.
+pos™iÚ
+.
+y
+ = s�‹->ªim©iÚ.
+¡¬t
+.y;
+
+873
+¡©e
+->
+·th_¡¬t
+
+
+874 ð&
+¡©e
+->
+grid
+[
+ `INDEXFI
+(¡©e->
+ªim©iÚ
+.
+¡¬t
+.
+x
+,
+
+875
+¡©e
+->
+ªim©iÚ
+.
+¡¬t
+.
+y
+)];
+
+876
+ `SDL_LogDebug
+(
+SDL_LOG_CATEGORY_APPLICATION
+,
+
+878
+¡©e
+->
+·th_¡¬t
+->
+coÜds
+.
+x
+,
+
+879
+¡©e
+->
+·th_¡¬t
+->
+coÜds
+.
+y
+,
+
+880
+¡©e
+->
+·th_¡¬t
+->
+em±y
+ ? "TRUE" : "FALSE");
+
+881 ià(
+¡©e
+->
+·th_¡¬t
+->
+em±y
+)
+
+883
+¡©e
+->
+·th_¡¬t
+ =
+NULL
+;
+
+884
+¡©e
+->
+£ËùiÚ_¡¬t
+.
+x
+ = -1;
+
+885
+¡©e
+->
+£ËùiÚ_¡¬t
+.
+y
+ = -1;
+
+889
+¡©e
+->
+mode
+ =
+STATE_SELECTION
+;
+
+890
+¡©e
+->
+·th_¡¬t
+->
+¡¬tšg
+ = 1;
+
+891
+ `SDL_LogDebug
+(
+SDL_LOG_CATEGORY_APPLICATION
+,
+
+895
+¡¬tx
+,
+¡¬ty
+,
+¡©e
+->
+poš‹r
+.
+x
+, s�‹->poš‹r.
+y
+,
+
+896
+¡©e
+->
+£ËùiÚ_¡¬t
+.
+x
+, s�‹->£ËùiÚ_¡¬t.
+y
+);
+
+897
+¡©e
+->
+»d¿w
+ = 1;
+
+899 ià(
+¡©e
+->
+mode
+ =ð
+STATE_SELECTION
+)
+
+901
+¡©e
+->
+mode
+ =
+STATE_MOVING
+;
+
+902
+ `ÿlcuÏ‹_grid_Üigš
+(
+¡©e
+, &
+¡¬tx
+, &
+¡¬ty
+);
+
+903
+ `sü“n_coÜd_to_grid_coÜd
+(
+¡©e
+, s�‹->
+poš‹r
+.
+x
+,
+
+904
+¡©e
+->
+poš‹r
+.
+y
+,
+¡¬tx
+,
+¡¬ty
+,
+
+905 &
+¡©e
+->
+£ËùiÚ_’d
+.
+x
+, &¡©e->£ËùiÚ_’d.
+y
+);
+
+906
+¡©e
+->
+·th_’d
+ = &¡©e->
+grid
+[
+ `INDEXFI
+(¡©e->
+£ËùiÚ_’d
+.
+x
+,
+
+907
+¡©e
+->
+£ËùiÚ_’d
+.
+y
+)];
+
+909 ià(!
+¡©e
+->
+·th_’d
+->
+em±y
+)
+
+910
+hªdË_þick_»£t
+;
+
+912
+ `SDL_LogDebug
+(
+SDL_LOG_CATEGORY_APPLICATION
+,
+
+916
+¡¬tx
+,
+¡¬ty
+,
+¡©e
+->
+poš‹r
+.
+x
+, s�‹->poš‹r.
+y
+,
+
+917
+¡©e
+->
+£ËùiÚ_’d
+.
+x
+, s�‹->£ËùiÚ_’d.
+y
+);
+
+919
+ `SDL_LogDebug
+(
+SDL_LOG_CATEGORY_APPLICATION
+,
+
+921
+¡©e
+->
+·th_¡¬t
+->
+coÜds
+.
+x
+,
+
+922
+¡©e
+->
+·th_¡¬t
+->
+coÜds
+.
+y
+, s�‹->
+·th_’d
+->coÜds.
+x
+,
+
+923
+¡©e
+->
+·th_’d
+->
+coÜds
+.
+y
+);
+
+924
+¡©e
+->
+·th_’d
+->
+’dšg
+ = 1;
+
+926
+ `fšd_shÜ‹¡_·th
+(
+¡©e
+->
+·th_¡¬t
+,
+NULL
+, 0);
+
+927
+ `m¬k_·th
+(
+¡©e
+->
+·th_’d
+);
+
+928
+ `´štf
+("M =\n");
+
+929
+ `´št_m©rix
+(
+¡©e
+->
+grid
+);
+
+932 ià(!
+¡©e
+->
+·th_¡¬t
+->
+·th_Ãxt
+)
+
+933
+hªdË_þick_»£t
+;
+
+935
+¡©e
+->
+ªim©iÚ
+.
+’d
+.
+x
+ = s�‹->
+·th_¡¬t
+->
+·th_Ãxt
+->
+coÜds
+.x;
+
+936
+¡©e
+->
+ªim©iÚ
+.
+’d
+.
+y
+ = s�‹->
+·th_¡¬t
+->
+·th_Ãxt
+->
+coÜds
+.y;
+
+937
+ `SDL_LogDebug
+(
+SDL_LOG_CATEGORY_APPLICATION
+,
+
+939
+¡©e
+->
+ªim©iÚ
+.
+¡¬t
+.
+x
+, s�‹->ªim©iÚ.¡¬t.
+y
+,
+
+940
+¡©e
+->
+ªim©iÚ
+.
+’d
+.
+x
+, s�‹->ªim©iÚ.’d.
+y
+);
+
+941
+¡©e
+->
+£ËùiÚ_¡¬t
+.
+x
+ = -1;
+
+942
+¡©e
+->
+£ËùiÚ_¡¬t
+.
+y
+ = -1;
+
+943
+ `ÿlcuÏ‹_d–�
+(
+¡©e
+);
+
+944
+¡©e
+->
+ªim©iÚ
+.
+¡•
+ = 1;
+
+945
+¡©e
+->
+ªim©iÚ
+.
+fš®_¡•
+ =
+ANIM_STEPS
+;
+
+946
+¡©e
+->
+ªim©iÚ
+.
+aùive
+ = 1;
+
+947
+¡©e
+->
+»d¿w
+ = 1;
+
+948
+ `´št_·th
+(&
+¡©e
+->
+grid
+[
+ `INDEXFI
+(¡©e->
+ªim©iÚ
+.
+¡¬t
+.
+x
+,
+
+949
+¡©e
+->
+ªim©iÚ
+.
+¡¬t
+.
+y
+)]);
+
+953
+hªdË_þick_»£t
+:
+
+954
+ `SDL_LogDebug
+(
+SDL_LOG_CATEGORY_APPLICATION
+, "handle_click: Reset");
+
+955
+¡©e
+->
+£ËùiÚ_¡¬t
+.
+x
+ = -1;
+
+956
+¡©e
+->
+£ËùiÚ_¡¬t
+.
+y
+ = -1;
+
+957
+¡©e
+->
+·th_¡¬t
+->
+¡¬tšg
+ = 0;
+
+958
+¡©e
+->
+·th_¡¬t
+ =
+NULL
+;
+
+959
+¡©e
+->
+·th_’d
+->
+’dšg
+ = 0;
+
+960
+¡©e
+->
+·th_’d
+ =
+NULL
+;
+
+961
+¡©e
+->
+mode
+ =
+STATE_IDLE
+;
+
+962
+¡©e
+->
+»d¿w
+ = 1;
+
+963
+ }
+}
+
+966
+ $hªdË_ev’t
+(
+S�‹
+*
+¡©e
+,
+SDL_Ev’t
+*
+ev’t
+)
+
+973
+ev’t
+->
+ty³
+)
+
+975
+SDL_EVENT_QUIT
+:
+
+976
+¡©e
+->
+rušg
+ = 0;
+
+978
+SDL_EVENT_WINDOW_RESIZED
+:
+
+979
+¡©e
+->
+»d¿w
+ = 1;
+
+980
+ `ÿlcuÏ‹_di¥Ïy_size
+(
+¡©e
+);
+
+982
+SDL_EVENT_KEY_DOWN
+:
+
+983
+ `SDL_LogDebug
+(
+SDL_LOG_CATEGORY_APPLICATION
+,
+
+984 "GÙ Keydown, key = %X, mod = %X",
+ev’t
+->
+key
+.key,
+
+985
+ev’t
+->
+key
+.
+mod
+);
+
+987
+ev’t
+->
+key
+.key)
+
+989
+SDLK_F1
+:
+
+990
+¡©e
+->
+h–p_shown
+ = 1;
+
+991
+¡©e
+->
+»d¿w
+ = 1;
+
+993
+SDLK_RETURN
+:
+
+994 ià(!(
+ev’t
+->
+key
+.
+mod
+ &
+SDL_KMOD_ALT
+))
+
+996
+¡©e
+->
+fuÎ_sü“n
+ = !state->full_screen;
+
+997
+ `SDL_LogDebug
+(
+SDL_LOG_CATEGORY_APPLICATION
+,
+
+999
+¡©e
+->
+fuÎ_sü“n
+ ? "ON" : "OFF");
+
+1000
+ `SDL_S‘WšdowFuÎsü“n
+(
+¡©e
+->
+wšdow
+,
+
+1001
+¡©e
+->
+fuÎ_sü“n
+);
+
+1003
+SDLK_ESCAPE
+:
+
+1004
+¡©e
+->
+h–p_shown
+ = 0;
+
+1005
+¡©e
+->
+»d¿w
+ = 1;
+
+1007
+SDLK_Q
+:
+
+1008 ià(
+ev’t
+->
+key
+.
+mod
+ &
+SDL_KMOD_CTRL
+)
+
+1009
+¡©e
+->
+rušg
+ = 0;
+
+1012
+ `SDL_LogDebug
+(
+SDL_LOG_CATEGORY_APPLICATION
+,
+
+1016
+SDL_EVENT_MOUSE_BUTTON_UP
+:
+
+1017
+ `hªdË_þick
+(
+¡©e
+);
+
+1019
+SDL_EVENT_MOUSE_MOTION
+:
+
+1020
+¡©e
+->
+poš‹r
+.
+x
+ =
+ev’t
+->
+mÙiÚ
+.x;
+
+1021
+¡©e
+->
+poš‹r
+.
+y
+ =
+ev’t
+->
+mÙiÚ
+.y;
+
+1022
+¡©e
+->
+»d¿w
+ = 1;
+
+1025
+ }
+}
+
+1028
+ $š™_ªim©iÚ
+(
+Anim©iÚS�‹
+*
+ªim©iÚ
+)
+
+1030
+ `as£¹
+(
+ªim©iÚ
+ !ð
+NULL
+);
+
+1031
+ªim©iÚ
+->
+¡¬t
+.
+x
+ = -1;
+
+1032
+ªim©iÚ
+->
+¡¬t
+.
+y
+ = -1;
+
+1033
+ªim©iÚ
+->
+pos™iÚ
+.
+x
+ = -1;
+
+1034
+ªim©iÚ
+->
+pos™iÚ
+.
+y
+ = -1;
+
+1035
+ªim©iÚ
+->
+’d
+.
+x
+ = -1;
+
+1036
+ªim©iÚ
+->
+’d
+.
+y
+ = -1;
+
+1037
+ªim©iÚ
+->
+d–�
+.
+x
+ = 0;
+
+1038
+ªim©iÚ
+->
+d–�
+.
+y
+ = 0;
+
+1039
+ªim©iÚ
+->
+aùive
+ = 0;
+
+1040
+ªim©iÚ
+->
+¡•
+ = 0;
+
+1041
+ªim©iÚ
+->
+fš®_¡•
+ = 0;
+
+1042
+ }
+}
+
+1045
+ $š™_ûÎ
+(
+C–l
+*
+c
+, cÚ¡
+SDL_FPošt
+*
+coÜds
+)
+
+1047
+ `as£¹
+((
+c
+ !ð
+NULL
+è&& (
+coÜds
+ != NULL));
+
+1048
+c
+->
+em±y
+ = 1;
+
+1049
+c
+->
+¡¬tšg
+ = 0;
+
+1050
+c
+->
+’dšg
+ = 0;
+
+1051
+c
+->
+·th
+ = 0;
+
+1052
+c
+->
+coÜds
+.
+x
+ = coords->x;
+
+1053
+c
+->
+coÜds
+.
+y
+ = coords->y;
+
+1054
+c
+->
+cÚ‹Ás
+ =
+CELL_EMPTY
+;
+
+1055
+c
+->
+Ëá
+ = c->
+up
+ = c->
+right
+ = c->
+down
+ =
+NULL
+;
+
+1056
+c
+->
+·th_sourû
+ =
+NULL
+;
+
+1057
+c
+->
+·th_di¡
+ =
+INT_MAX
+;
+
+1058
+ }
+}
+
+1061
+ $š™_¡©e
+(
+S�‹
+*
+¡©e
+)
+
+1063
+ `as£¹
+(
+¡©e
+ !ð
+NULL
+);
+
+1064
+ `š™_ªim©iÚ
+(&
+¡©e
+->
+ªim©iÚ
+);
+
+1065
+¡©e
+->
+grid
+ =
+NULL
+;
+
+1066
+¡©e
+->
+loÿtiÚ_poš‹r
+ = 0;
+
+1067
+¡©e
+->
+loÿtiÚ_¡ack
+ =
+NULL
+;
+
+1068
+¡©e
+->
+ûÎ_sÿË_çùÜ
+ = 2.0f;
+
+1069
+¡©e
+->
+di¥Ïy_width
+ =
+DEFAULT_WIDTH
+;
+
+1070
+¡©e
+->
+di¥Ïy_height
+ =
+DEFAULT_HEIGHT
+;
+
+1071
+¡©e
+->
+fuÎ_sü“n
+ = 1;
+
+1072
+¡©e
+->
+h–p_shown
+ = 0;
+
+1073
+¡©e
+->
+·th_¡¬t
+ =
+NULL
+;
+
+1074
+¡©e
+->
+·th_’d
+ =
+NULL
+;
+
+1075
+¡©e
+->
+»d¿w
+ = 1;
+
+1076
+¡©e
+->
+»nd””
+ =
+NULL
+;
+
+1077
+¡©e
+->
+rušg
+ = 1;
+
+1078
+¡©e
+->
+sü“n_width
+ =
+DEFAULT_WIDTH
+;
+
+1079
+¡©e
+->
+sü“n_height
+ =
+DEFAULT_HEIGHT
+;
+
+1080
+¡©e
+->
+scÜe
+ = 0;
+
+1081
+¡©e
+->
+¥r™es
+ =
+NULL
+;
+
+1082
+¡©e
+->
+mode
+ =
+STATE_IDLE
+;
+
+1083
+¡©e
+->
+‹r12_‹xtu»
+ =
+NULL
+;
+
+1084
+¡©e
+->
+background
+ =
+NULL
+;
+
+1085
+¡©e
+->
+wšdow
+ =
+NULL
+;
+
+1086
+¡©e
+->
+‹xt_sÿË_çùÜ
+ = 2.0f;
+
+1087
+ }
+}
+
+1090
+ $lßd_‹xtu»s
+(
+S�‹
+*
+¡©e
+)
+
+1092
+SDL_Surçû
+*
+surçû
+ =
+NULL
+;
+
+1093
+SDL_SÿËMode
+
+sÿË_mode
+ =
+SDL_SCALEMODE_PIXELART
+;
+
+1095
+ `as£¹
+(
+¡©e
+ !ð
+NULL
+);
+
+1097
+surçû
+ =
+ `Œy_lßd
+(
+SPRITES_PNG
+);
+
+1098 ià(!
+surçû
+)
+
+1100
+¡©e
+->
+¥r™es
+ =
+ `SDL_C»©eTextu»FromSurçû
+(¡©e->
+»nd””
+,
+surçû
+);
+
+1101 ià(!
+¡©e
+->
+¥r™es
+)
+
+1103
+ `SDL_LogE¼Ü
+(
+SDL_LOG_CATEGORY_ERROR
+,
+
+1105
+ `SDL_G‘E¼Ü
+());
+
+1106
+ `do_ex™
+(1,
+¡©e
+);
+
+1108
+ `SDL_S‘Textu»SÿËMode
+(
+¡©e
+->
+¥r™es
+,
+sÿË_mode
+);
+
+1109
+ `SDL_De¡roySurçû
+(
+surçû
+);
+
+1111
+surçû
+ =
+ `Œy_lßd
+(
+TER12_PNG
+);
+
+1112 ià(!
+surçû
+)
+
+1114
+¡©e
+->
+‹r12_‹xtu»
+
+
+1115 ð
+ `SDL_C»©eTextu»FromSurçû
+(
+¡©e
+->
+»nd””
+,
+surçû
+);
+
+1116 ià(!
+¡©e
+->
+‹r12_‹xtu»
+)
+
+1118
+ `SDL_LogE¼Ü
+(
+SDL_LOG_CATEGORY_ERROR
+,
+
+1120
+ `SDL_G‘E¼Ü
+());
+
+1121
+ `do_ex™
+(1,
+¡©e
+);
+
+1123
+ `SDL_S‘Textu»SÿËMode
+(
+¡©e
+->
+‹r12_‹xtu»
+,
+sÿË_mode
+);
+
+1124
+ `SDL_De¡roySurçû
+(
+surçû
+);
+
+1127
+ }
+}
+
+1130
+ $loÿtiÚ_pÝ
+(
+S�‹
+*
+¡©e
+,
+SDL_Pošt
+*
+loÿtiÚ
+)
+
+1132
+ `as£¹
+((
+¡©e
+ !ð
+NULL
+è&& (
+loÿtiÚ
+ != NULL));
+
+1133 ià(
+¡©e
+->
+loÿtiÚ_poš‹r
+ == 0)
+
+1135
+¡©e
+->
+loÿtiÚ_poš‹r
+--;
+
+1136
+loÿtiÚ
+->
+x
+ =
+¡©e
+->
+loÿtiÚ_¡ack
+[¡©e->
+loÿtiÚ_poš‹r
+].x;
+
+1137
+loÿtiÚ
+->
+y
+ =
+¡©e
+->
+loÿtiÚ_¡ack
+[¡©e->
+loÿtiÚ_poš‹r
+].y;
+
+1139
+ }
+}
+
+1142
+ $loÿtiÚ_push
+(
+S�‹
+*
+¡©e
+, cÚ¡
+SDL_Pošt
+*
+loÿtiÚ
+)
+
+1144
+ `as£¹
+(
+loÿtiÚ
+ !ð
+NULL
+);
+
+1145
+¡©e
+->
+loÿtiÚ_¡ack
+[¡©e->
+loÿtiÚ_poš‹r
+].
+x
+ =
+loÿtiÚ
+->x;
+
+1146
+¡©e
+->
+loÿtiÚ_¡ack
+[¡©e->
+loÿtiÚ_poš‹r
+].
+y
+ =
+loÿtiÚ
+->y;
+
+1147
+¡©e
+->
+loÿtiÚ_poš‹r
+++;
+
+1148
+ }
+}
+
+1151
+ $m¬k_·th
+(
+C–l
+*
+c
+)
+
+1153 ià(!
+c
+)
+
+1156
+c
+->
+·th
+ = 1;
+
+1157 ià(
+c
+->
+·th_sourû
+)
+
+1159
+c
+->
+·th_sourû
+->
+·th_Ãxt
+ = c;
+
+1160
+ `SDL_LogDebug
+(
+SDL_LOG_CATEGORY_APPLICATION
+,
+
+1162
+c
+->
+·th_sourû
+->
+coÜds
+.
+x
+, c->·th_sourû->coÜds.
+y
+,
+
+1163
+c
+->
+·th_sourû
+->
+·th_Ãxt
+->
+coÜds
+.
+x
+,
+
+1164
+c
+->
+·th_sourû
+->
+·th_Ãxt
+->
+coÜds
+.
+y
+);
+
+1166
+ `m¬k_·th
+(
+c
+->
+·th_sourû
+);
+
+1167
+ }
+}
+
+1170
+ $Ãxt_¡•
+(
+S�‹
+*
+¡©e
+)
+
+1172
+ `as£¹
+(
+¡©e
+ !ð
+NULL
+);
+
+1173
+¡©e
+->
+»d¿w
+ = 1;
+
+1174
+ }
+}
+
+1177
+ $·s§bË
+(cÚ¡
+S�‹
+*
+¡©e
+, cÚ¡
+x
+, cÚ¡
+y
+)
+
+1179
+ `as£¹
+(
+¡©e
+ !ð
+NULL
+);
+
+1180
+x
+ >ð0 && x <
+GRID_WIDTH
+ &&
+y
+ >ð0 && y <
+GRID_HEIGHT
+
+
+1181 &&
+¡©e
+->
+grid
+[
+ `INDEX
+(
+x
+,
+y
+)].
+cÚ‹Ás
+ =ð
+CELL_EMPTY
+;
+
+1182
+ }
+}
+
+1185
+ $´št_m©rix
+(cÚ¡
+C–l
+*
+M
+)
+
+1187 cÚ¡
+C–l
+*
+c
+ =
+NULL
+;
+
+1188
+x
+,
+y
+;
+
+1190
+y
+ = 0; y <
+GRID_HEIGHT
+; y++)
+
+1192
+x
+ = 0; x <
+GRID_WIDTH
+; x++)
+
+1194
+c
+ = &
+M
+[
+ `INDEX
+(
+x
+,
+y
+)];
+
+1195 ià(
+c
+->
+¡¬tšg
+)
+
+1196
+ `´štf
+("%s",
+ûÎ_image
+[
+CELL_START
+]);
+
+1197 ià(
+c
+->
+’dšg
+)
+
+1198
+ `´štf
+("%s",
+ûÎ_image
+[
+CELL_END
+]);
+
+1199 ià(
+c
+->
+·th
+)
+
+1200
+ `´štf
+("%s",
+ûÎ_image
+[
+CELL_PATH
+]);
+
+1201 ià(!
+c
+->
+em±y
+)
+
+1202
+ `´štf
+("%s",
+ûÎ_image
+[
+c
+->
+cÚ‹Ás
+]);
+
+1204
+ `´štf
+("%s",
+ûÎ_image
+[
+CELL_EMPTY
+]);
+
+1206
+ `´štf
+("\n");
+
+1209
+ }
+}
+
+1212
+ $´št_·th
+(
+C–l
+*
+c
+)
+
+1214
+ `´štf
+("(%0.0f, %0.0f)",
+c
+->
+coÜds
+.
+x
+, c->coÜds.
+y
+);
+
+1215 ià(
+c
+->
+·th_Ãxt
+)
+
+1217
+ `´štf
+(" -> ");
+
+1218
+ `´št_·th
+(
+c
+->
+·th_Ãxt
+);
+
+1221
+ `´štf
+("\n");
+
+1222
+ }
+}
+
+1225
+ $ȣt
+(
+S�‹
+*
+¡©e
+)
+
+1227
+y
+ = 0; y <
+GRID_HEIGHT
+; y++)
+
+1228
+x
+ = 0; x <
+GRID_WIDTH
+; x++)
+
+1229
+¡©e
+->
+grid
+[
+ `INDEX
+(
+x
+,
+y
+)].
+cÚ‹Ás
+ =
+CELL_EMPTY
+;
+
+1230
+¡©e
+->
+mode
+ =
+STATE_IDLE
+;
+
+1231
+¡©e
+->
+£ËùiÚ_¡¬t
+.
+x
+ = -1;
+
+1232
+¡©e
+->
+£ËùiÚ_¡¬t
+.
+y
+ = -1;
+
+1233
+¡©e
+->
+£ËùiÚ_’d
+.
+x
+ = -1;
+
+1234
+¡©e
+->
+£ËùiÚ_’d
+.
+y
+ = -1;
+
+1235
+¡©e
+->
+loÿtiÚ_poš‹r
+ = 0;
+
+1236
+¡©e
+->
+ªim©iÚ
+.
+aùive
+ = 0;
+
+1237
+¡©e
+->
+»d¿w
+ = 1;
+
+1238
+ }
+}
+
+1241
+ $»£t_·th
+(
+C–l
+*
+grid
+)
+
+1243
+C–l
+*
+c
+ =
+NULL
+;
+
+1244
+x
+,
+y
+;
+
+1246
+ `as£¹
+(
+grid
+ !ð
+NULL
+);
+
+1248
+y
+ = 0; y <
+GRID_HEIGHT
+; y++)
+
+1249
+x
+ = 0; x <
+GRID_WIDTH
+; x++)
+
+1251
+c
+ = &
+grid
+[
+ `INDEX
+(
+x
+,
+y
+)];
+
+1252
+c
+->
+·th_sourû
+ =
+NULL
+;
+
+1253
+c
+->
+·th_Ãxt
+ =
+NULL
+;
+
+1254
+c
+->
+·th_di¡
+ =
+INT_MAX
+;
+
+1255
+c
+->
+¡¬tšg
+ = 0;
+
+1256
+c
+->
+’dšg
+ = 0;
+
+1257
+c
+->
+·th
+ = 0;
+
+1259
+ }
+}
+
+1262
+ $sü“n_coÜd_to_grid_coÜd
+(
+S�‹
+*
+¡©e
+, cÚ¡
+x
+, cÚ¡
+y
+,
+
+1263 cÚ¡
+¡¬tx
+, cÚ¡
+¡¬ty
+, *
+to_x
+, *
+to_y
+)
+
+1265
+_çùÜ_x
+,
+_çùÜ_y
+;
+
+1266
+_¡¬tx
+,
+_¡¬ty
+;
+
+1268
+ `as£¹
+(
+¡©e
+ !ð
+NULL
+);
+
+1269
+ `as£¹
+((
+to_x
+ !ð
+NULL
+è&& (
+to_y
+ != NULL)
+
+1270 && (
+¡©e
+->
+ûÎ_sÿË_çùÜ
+ != 0.0f));
+
+1271
+_çùÜ_x
+ = ()
+¡©e
+->
+di¥Ïy_width
+ / s�‹->
+sü“n_width
+;
+
+1272
+_çùÜ_y
+ = ()
+¡©e
+->
+di¥Ïy_height
+ / s�‹->
+sü“n_height
+;
+
+1273
+_¡¬tx
+ =
+¡¬tx
+ *
+_çùÜ_x
+;
+
+1274
+_¡¬ty
+ =
+¡¬ty
+ *
+_çùÜ_y
+;
+
+1277 *
+to_x
+ =
+x
+ >ð
+_¡¬tx
+
+
+1278 ? (
+x
+ <
+_¡¬tx
+ +
+_çùÜ_x
+ *
+¡©e
+->
+ûÎ_sÿË_çùÜ
+
+
+1279 *
+CELL_SIZE
+ *
+GRID_WIDTH
+
+
+1280 ? (
+x
+ -
+_¡¬tx
+è/ (
+_çùÜ_x
+ *
+¡©e
+->
+ûÎ_sÿË_çùÜ
+
+
+1281 *
+CELL_SIZE
+)
+
+1282 :
+GRID_WIDTH
+ - 1)
+
+1284 *
+to_y
+ =
+y
+ >ð
+_¡¬ty
+
+
+1285 ? (
+y
+ <
+_¡¬ty
+ +
+_çùÜ_y
+ *
+¡©e
+->
+ûÎ_sÿË_çùÜ
+
+
+1286 *
+CELL_SIZE
+ *
+GRID_HEIGHT
+
+
+1287 ? (
+y
+ -
+_¡¬ty
+è/ (
+_çùÜ_y
+ *
+¡©e
+->
+ûÎ_sÿË_çùÜ
+
+
+1288 *
+CELL_SIZE
+)
+
+1289 :
+GRID_HEIGHT
+ - 1)
+
+1292
+ }
+}
+
+1295
+ $sü“n_coÜd_to_grid_coÜdF
+(
+S�‹
+*
+¡©e
+, cÚ¡
+x
+, cÚ¡
+y
+,
+
+1296 cÚ¡
+¡¬tx
+, cÚ¡
+¡¬ty
+, *
+to_x
+, *
+to_y
+)
+
+1298
+_çùÜ_x
+,
+_çùÜ_y
+;
+
+1299
+_¡¬tx
+,
+_¡¬ty
+;
+
+1301
+ `as£¹
+(
+¡©e
+ !ð
+NULL
+);
+
+1302
+ `as£¹
+((
+to_x
+ !ð
+NULL
+è&& (
+to_y
+ != NULL)
+
+1303 && (
+¡©e
+->
+ûÎ_sÿË_çùÜ
+ != 0.0f));
+
+1304
+_çùÜ_x
+ = ()
+¡©e
+->
+di¥Ïy_width
+ / s�‹->
+sü“n_width
+;
+
+1305
+_çùÜ_y
+ = ()
+¡©e
+->
+di¥Ïy_height
+ / s�‹->
+sü“n_height
+;
+
+1306
+_¡¬tx
+ =
+¡¬tx
+ *
+_çùÜ_x
+;
+
+1307
+_¡¬ty
+ =
+¡¬ty
+ *
+_çùÜ_y
+;
+
+1310 *
+to_x
+ =
+x
+ >ð
+_¡¬tx
+
+
+1311 ? (
+x
+ <
+_¡¬tx
+ +
+_çùÜ_x
+ *
+¡©e
+->
+ûÎ_sÿË_çùÜ
+
+
+1312 *
+CELL_SIZE
+ *
+GRID_WIDTH
+
+
+1313 ? (
+x
+ -
+_¡¬tx
+è/ (
+_çùÜ_x
+ *
+¡©e
+->
+ûÎ_sÿË_çùÜ
+
+
+1314 *
+CELL_SIZE
+)
+
+1315 :
+GRID_WIDTH
+ - 1)
+
+1317 *
+to_y
+ =
+y
+ >ð
+_¡¬ty
+
+
+1318 ? (
+y
+ <
+_¡¬ty
+ +
+_çùÜ_y
+ *
+¡©e
+->
+ûÎ_sÿË_çùÜ
+
+
+1319 *
+CELL_SIZE
+ *
+GRID_HEIGHT
+
+
+1320 ? (
+y
+ -
+_¡¬ty
+è/ (
+_çùÜ_y
+ *
+¡©e
+->
+ûÎ_sÿË_çùÜ
+
+
+1321 *
+CELL_SIZE
+)
+
+1322 :
+GRID_HEIGHT
+ - 1)
+
+1325
+ }
+}
+
+1328
+ $¡•_ªim©iÚ
+(
+S�‹
+*
+¡©e
+)
+
+1330
+C–l
+*
+äom
+ =
+NULL
+;
+
+1331
+C–l
+*
+to
+ =
+NULL
+;
+
+1332
+isx
+,
+isy
+,
+›x
+,
+›y
+;
+
+1334 ià(
+¡©e
+->
+ªim©iÚ
+.
+¡•
+ =ð¡©e->ªim©iÚ.
+fš®_¡•
+)
+
+1336
+isx
+ = ()
+ `round
+(
+¡©e
+->
+ªim©iÚ
+.
+¡¬t
+.
+x
+);
+
+1337
+isy
+ = ()
+ `round
+(
+¡©e
+->
+ªim©iÚ
+.
+¡¬t
+.
+y
+);
+
+1338
+›x
+ = ()
+ `round
+(
+¡©e
+->
+ªim©iÚ
+.
+’d
+.
+x
+);
+
+1339
+›y
+ = ()
+ `round
+(
+¡©e
+->
+ªim©iÚ
+.
+’d
+.
+y
+);
+
+1340
+äom
+ = &
+¡©e
+->
+grid
+[
+ `INDEX
+(
+isx
+,
+isy
+)];
+
+1341
+to
+ = &
+¡©e
+->
+grid
+[
+ `INDEX
+(
+›x
+,
+›y
+)];
+
+1343 ià(
+to
+->
+’dšg
+)
+
+1345
+¡©e
+->
+ªim©iÚ
+.
+aùive
+ = 0;
+
+1346
+ `SDL_LogDebug
+(
+SDL_LOG_CATEGORY_APPLICATION
+,
+
+1348
+¡©e
+->
+ªim©iÚ
+.
+’d
+.
+x
+, s�‹->ªim©iÚ.’d.
+y
+);
+
+1350 ià(
+to
+->
+·th_Ãxt
+)
+
+1352
+¡©e
+->
+ªim©iÚ
+.
+¡¬t
+.
+x
+ = s�‹->ªim©iÚ.
+’d
+.x;
+
+1353
+¡©e
+->
+ªim©iÚ
+.
+¡¬t
+.
+y
+ = s�‹->ªim©iÚ.
+’d
+.y;
+
+1354
+¡©e
+->
+ªim©iÚ
+.
+pos™iÚ
+.
+x
+ = s�‹->ªim©iÚ.
+¡¬t
+.x;
+
+1355
+¡©e
+->
+ªim©iÚ
+.
+pos™iÚ
+.
+y
+ = s�‹->ªim©iÚ.
+¡¬t
+.y;
+
+1356
+¡©e
+->
+ªim©iÚ
+.
+’d
+.
+x
+ =
+to
+->
+·th_Ãxt
+->
+coÜds
+.x;
+
+1357
+¡©e
+->
+ªim©iÚ
+.
+’d
+.
+y
+ =
+to
+->
+·th_Ãxt
+->
+coÜds
+.y;
+
+1358
+ `SDL_LogDebug
+(
+SDL_LOG_CATEGORY_APPLICATION
+,
+
+1360
+¡©e
+->
+ªim©iÚ
+.
+’d
+.
+x
+, s�‹->ªim©iÚ.’d.
+y
+);
+
+1361
+ `SDL_LogDebug
+(
+SDL_LOG_CATEGORY_APPLICATION
+,
+
+1363
+¡©e
+->
+ªim©iÚ
+.
+¡¬t
+.
+x
+,
+
+1364
+¡©e
+->
+ªim©iÚ
+.
+¡¬t
+.
+y
+,
+
+1365
+¡©e
+->
+ªim©iÚ
+.
+’d
+.
+x
+, s�‹->ªim©iÚ.’d.
+y
+);
+
+1366
+ `ÿlcuÏ‹_d–�
+(
+¡©e
+);
+
+1367
+¡©e
+->
+ªim©iÚ
+.
+¡•
+ = 1;
+
+1371
+ `SDL_LogDebug
+(
+SDL_LOG_CATEGORY_APPLICATION
+,
+
+1373
+¡©e
+->
+ªim©iÚ
+.
+’d
+.
+x
+, s�‹->ªim©iÚ.’d.
+y
+);
+
+1374
+¡©e
+->
+ªim©iÚ
+.
+aùive
+ = 0;
+
+1377
+ `SDL_LogDebug
+(
+SDL_LOG_CATEGORY_APPLICATION
+,
+
+1378 "grid[%d][%d] = %d <-> grid[%d][%d] = %d",
+›y
+,
+›x
+,
+
+1379
+to
+->
+cÚ‹Ás
+,
+isy
+,
+isx
+,
+äom
+->contents);
+
+1380
+to
+->
+cÚ‹Ás
+ =
+äom
+->contents;
+
+1381
+äom
+->
+cÚ‹Ás
+ =
+CELL_EMPTY
+;
+
+1382
+to
+->
+em±y
+ = 0;
+
+1383
+äom
+->
+em±y
+ = 1;
+
+1385 ià(
+to
+->
+’dšg
+)
+
+1387
+ `»£t_·th
+(
+¡©e
+->
+grid
+);
+
+1388
+¡©e
+->
+·th_¡¬t
+ =
+NULL
+;
+
+1389
+¡©e
+->
+·th_’d
+ =
+NULL
+;
+
+1391
+ `check_five
+(
+¡©e
+,
+to
+);
+
+1396
+¡©e
+->
+ªim©iÚ
+.
+pos™iÚ
+.
+x
+ +ð¡©e->ªim©iÚ.
+d–�
+.x;
+
+1397
+¡©e
+->
+ªim©iÚ
+.
+pos™iÚ
+.
+y
+ +ð¡©e->ªim©iÚ.
+d–�
+.y;
+
+1398
+¡©e
+->
+ªim©iÚ
+.
+¡•
+++;
+
+1399
+ `SDL_LogDebug
+(
+SDL_LOG_CATEGORY_APPLICATION
+,
+
+1401
+¡©e
+->
+ªim©iÚ
+.
+pos™iÚ
+.
+x
+, s�‹->ªim©iÚ.pos™iÚ.
+y
+,
+
+1402
+¡©e
+->
+ªim©iÚ
+.
+’d
+.
+x
+, s�‹->ªim©iÚ.’d.
+y
+,
+
+1403
+¡©e
+->
+ªim©iÚ
+.
+¡•
+, s�‹->ªim©iÚ.
+fš®_¡•
+,
+
+1404
+¡©e
+->
+ªim©iÚ
+.
+aùive
+ ? "ACTIVE" : "INACTIVE");
+
+1405
+ }
+}
+
+1407
+SDL_Surçû
+*
+
+1408
+ $Œy_lßd
+(cÚ¡ *
+fž’ame
+)
+
+1410
+SDL_Surçû
+*
+surçû
+ =
+NULL
+;
+
+1411
+‹x_·thÇme
+[
+BUFSIZE
+];
+
+1413
+ `as£¹
+(
+fž’ame
+ !ð
+NULL
+);
+
+1414
+ `¢´štf
+(
+‹x_·thÇme
+,
+BUFSIZE
+, "%s/%s",
+DATADIR
+,
+fž’ame
+);
+
+1415
+surçû
+ =
+ `IMG_Lßd
+(
+‹x_·thÇme
+);
+
+1416 ià(!
+surçû
+)
+
+1418
+ `SDL_LogE¼Ü
+(
+SDL_LOG_CATEGORY_ERROR
+,
+
+1419 "Œy_lßd: IMG_Lßd fažed: %s",
+ `SDL_G‘E¼Ü
+());
+
+1420
+ `¢´štf
+(
+‹x_·thÇme
+,
+BUFSIZE
+, "./%s",
+fž’ame
+);
+
+1421
+ `SDL_LogDebug
+(
+SDL_LOG_CATEGORY_APPLICATION
+,
+
+1422 "Œy_lßd:�ryšg %s",
+‹x_·thÇme
+);
+
+1423
+surçû
+ =
+ `IMG_Lßd
+(
+‹x_·thÇme
+);
+
+1424 ià(!
+surçû
+)
+
+1426
+ `SDL_LogE¼Ü
+(
+SDL_LOG_CATEGORY_ERROR
+,
+
+1428
+ `SDL_G‘E¼Ü
+());
+
+1429
+ `ex™
+(1);
+
+1431
+ `SDL_LogDebug
+(
+SDL_LOG_CATEGORY_APPLICATION
+,
+
+1432 "Œy_lßd: sucûs (%s)",
+‹x_·thÇme
+);
+
+1435
+surçû
+;
+
+1436
+ }
+}
+
+1439
+ $maš
+(
+¬gc
+, **
+¬gv
+)
+
+1441
+SDL_Ev’t
+
+ev’t
+;
+
+1442
+C–l
+*
+c
+ =
+NULL
+;
+
+1443
+S�‹
+
+¡©e
+;
+
+1444
+time¥ec
+
+now
+;
+
+1445
+SDL_FPošt
+
+coÜds
+;
+
+1446
+px
+,
+py
+;
+
+1447
+þockid_t
+
+cid
+;
+
+1448
+ϡ_time
+,
+cu¼’t_time
+;
+
+1449
+x
+,
+y
+;
+
+1453
+ `š™_¡©e
+(&
+¡©e
+);
+
+1455 ià(!
+ `SDL_In™
+(
+SDL_INIT_VIDEO
+))
+
+1457
+ `SDL_LogE¼Ü
+(
+SDL_LOG_CATEGORY_ERROR
+, "SDL_Init failed: %s",
+
+1458
+ `SDL_G‘E¼Ü
+());
+
+1459
+ `ex™
+(1);
+
+1462
+ `SDL_S‘LogPriÜ™›s
+(
+SDL_LOG_PRIORITY_DEBUG
+);
+
+1463 ià(!
+ `SDL_C»©eWšdowAndR’d””
+(
+WIN_TITLE
+,
+DEFAULT_WIDTH
+,
+
+1464
+DEFAULT_HEIGHT
+,
+
+1465
+SDL_WINDOW_FULLSCREEN
+ |
+SDL_WINDOW_BORDERLESS
+,
+
+1466 &
+¡©e
+.
+wšdow
+, &¡©e.
+»nd””
+))
+
+1468
+ `SDL_LogE¼Ü
+(
+SDL_LOG_CATEGORY_ERROR
+,
+
+1470
+ `SDL_G‘E¼Ü
+());
+
+1471
+ `do_ex™
+(1, &
+¡©e
+);
+
+1474
+ `SDL_S‘HštW™hPriÜ™y
+(
+SDL_HINT_RENDER_VSYNC
+, "1",
+SDL_HINT_OVERRIDE
+);
+
+1475
+ `SDL_S‘R’d”LogiÿlP»£Á©iÚ
+(
+¡©e
+.
+»nd””
+,
+DEFAULT_WIDTH
+,
+
+1476
+DEFAULT_HEIGHT
+,
+SDL_LOGICAL_PRESENTATION_LETTERBOX
+);
+
+1478
+ `ÿlcuÏ‹_di¥Ïy_size
+(&
+¡©e
+);
+
+1480
+¡©e
+.
+grid
+ =
+ `m®loc
+((
+C–l
+è*
+GRID_WIDTH
+ *
+GRID_HEIGHT
+ + 1);
+
+1481 ià(!
+¡©e
+.
+grid
+)
+
+1483
+ `SDL_LogE¼Ü
+(
+SDL_LOG_CATEGORY_ERROR
+, "calloc failed");
+
+1484
+ `do_ex™
+(1, &
+¡©e
+);
+
+1486
+y
+ = 0; y <
+GRID_HEIGHT
+; y++)
+
+1487
+x
+ = 0; x <
+GRID_WIDTH
+; x++)
+
+1489
+c
+ = &
+¡©e
+.
+grid
+[
+ `INDEX
+(
+x
+,
+y
+)];
+
+1490
+coÜds
+.
+x
+ = x;
+
+1491
+coÜds
+.
+y
+ = y;
+
+1492
+ `š™_ûÎ
+(
+c
+, &
+coÜds
+);
+
+1493 ià(
+x
+ > 0)
+
+1494
+c
+->
+Ëá
+ = &
+¡©e
+.
+grid
+[
+ `INDEX
+(
+x
+ - 1,
+y
+)];
+
+1495 ià(
+y
+ > 0)
+
+1496
+c
+->
+up
+ = &
+¡©e
+.
+grid
+[
+ `INDEX
+(
+x
+,
+y
+ - 1)];
+
+1497 ià(
+x
+ <
+GRID_WIDTH
+ - 1)
+
+1498
+c
+->
+right
+ = &
+¡©e
+.
+grid
+[
+ `INDEX
+(
+x
+ + 1,
+y
+)];
+
+1499 ià(
+y
+ <
+GRID_HEIGHT
+ - 1)
+
+1500
+c
+->
+down
+ = &
+¡©e
+.
+grid
+[
+ `INDEX
+(
+x
+,
+y
+ + 1)];
+
+1521 ià(
+ `lßd_‹xtu»s
+(&
+¡©e
+) < 0)
+
+1522
+ `do_ex™
+(1, &
+¡©e
+);
+
+1524
+¡©e
+.
+loÿtiÚ_¡ack
+
+
+1525 ð(
+SDL_Pošt
+*)
+ `ÿÎoc
+(
+LOCATION_STACK_MAX
+, (SDL_Point));
+
+1526
+¡©e
+.
+ªim©iÚ
+.
+aùive
+ = 0;
+
+1528
+ `SDL_G‘Mou£S�‹
+(&
+px
+, &
+py
+);
+
+1529
+¡©e
+.
+poš‹r
+.
+x
+ =
+px
+;
+
+1530
+¡©e
+.
+poš‹r
+.
+y
+ =
+py
+;
+
+1532
+ϡ_time
+ =
+ `SDL_G‘Ticks
+();
+
+1533
+ `þock_g‘ýuþockid
+(
+ `g‘pid
+(), &
+cid
+);
+
+1534
+ `þock_g‘time
+(
+cid
+, &
+now
+);
+
+1535
+ `¤ªdom
+(
+now
+.
+tv_£c
+);
+
+1537
+¡©e
+.
+£ËùiÚ_¡¬t
+.
+x
+ = -1;
+
+1538
+¡©e
+.
+£ËùiÚ_¡¬t
+.
+y
+ = -1;
+
+1539
+¡©e
+.
+£ËùiÚ_’d
+.
+x
+ = -1;
+
+1540
+¡©e
+.
+£ËùiÚ_’d
+.
+y
+ = -1;
+
+1542
+ `fžl_Œ�Ët
+(&
+¡©e
+);
+
+1543
+¡©e
+.
+rušg
+)
+
+1545
+cu¼’t_time
+ =
+ `SDL_G‘Ticks
+();
+
+1546 ià(
+¡©e
+.
+ªim©iÚ
+.
+aùive
+)
+
+1548 ià(
+cu¼’t_time
+ >
+ϡ_time
+ + 1000 / 60)
+
+1550
+ `d¿w
+(&
+¡©e
+);
+
+1551
+ `¡•_ªim©iÚ
+(&
+¡©e
+);
+
+1552
+ϡ_time
+ =
+cu¼’t_time
+;
+
+1557 ià(
+¡©e
+.
+»d¿w
+)
+
+1559
+ `d¿w
+(&
+¡©e
+);
+
+1560
+¡©e
+.
+»d¿w
+ = 0;
+
+1564
+ `SDL_PÞlEv’t
+(&
+ev’t
+))
+
+1565
+ `hªdË_ev’t
+(&
+¡©e
+, &
+ev’t
+);
+
+1569
+ }
+}
+
+ @version.h
+
+5
+ #PROGRAM_NAME
+ "lšije"
+
+ )
+
+6
+ #DATE
+ "unknown"
+
+ )
+
+7
+ #VERSION
+ "unknown"
+
+ )
+
+ @/usr/include/assert.h
+
+45
+ ~<sys/cdefs.h
+>
+
+47 #undeà
+as£¹
+
+
+48 #undeà
+_as£¹
+
+
+50 #ifdeà
+NDEBUG
+
+
+51
+ #as£¹
+(
+e
+è(()0)
+
+ )
+
+52
+ #_as£¹
+(
+e
+è(()0)
+
+ )
+
+54
+ #_as£¹
+(
+e
+è
+ `as£¹
+Ó)
+
+ )
+
+55 #ià
+__ISO_C_VISIBLE
+ >= 1999
+
+56
+ #as£¹
+(
+e
+è(Óè? ()0 :
+ `__as£¹2
+(
+__FILE__
+,
+__LINE__
+,
+__func__
+, #e))
+
+ )
+
+58
+ #as£¹
+(
+e
+è(Óè? ()0 :
+ `__as£¹
+(
+__FILE__
+,
+__LINE__
+, #e))
+
+ )
+
+62 #iâdeà
+_ASSERT_H_
+
+
+63
+ #_ASSERT_H_
+
+
+ )
+
+65 #ià
+defšed
+(
+__STDC_VERSION__
+) && __STDC_VERSION__ >= 201112
+
+66
+ #¡©ic_as£¹
+
+_S�tic_as£¹
+
+
+ )
+
+69
+__BEGIN_DECLS
+
+
+70
+__d—d
+
+__as£¹
+(const *, , const *);
+
+71
+__d—d
+
+__as£¹2
+(const *, , const *, const *);
+
+72
+ g__END_DECLS
+
+
+ @/usr/include/errno.h
+
+39 #iâdef
+_ERRNO_H_
+
+
+40
+ #_ERRNO_H_
+
+
+ )
+
+42
+ ~<sys/Ӽo.h
+>
+
+44
+ g__BEGIN_DECLS
+
+
+45 #ià
+__BSD_VISIBLE
+
+
+46 #iâdef
+__SYS_ERRLIST
+
+
+47
+ #__SYS_ERRLIST
+
+
+ )
+
+48
+sys_ü
+;
+
+49 *
+sys_”¾i¡
+[];
+
+53 #iâdeà
+Ӽo
+
+
+54 *
+__Ӽo
+();
+
+55
+ #Ӽo
+ (*
+ `__Ӽo
+())
+
+ )
+
+57
+ g__END_DECLS
+
+
+ @/usr/include/math.h
+
+17 #iâdeà
+_MATH_H_
+
+
+18
+ #_MATH_H_
+
+
+ )
+
+20
+ ~<sys/_ty³s.h
+>
+
+21
+ ~<sys/lim™s.h
+>
+
+23
+__BEGIN_DECLS
+
+
+27
+__šfš™y
+[];
+
+28 #ià
+__GNUC_PREREQ__
+(3, 3)
+
+29
+ #HUGE_VAL
+
+ `__bužtš_huge_v®
+()
+
+ )
+
+31
+ #HUGE_VAL
+ (*(*)(*)
+__šfš™y
+)
+
+ )
+
+37 #ià
+__ISO_C_VISIBLE
+ >= 1999
+
+38
+__doubË_t
+
+ tdoubË_t
+;
+
+39
+__æßt_t
+
+ tæßt_t
+;
+
+41 #ià
+__GNUC_PREREQ__
+(3, 3)
+
+42
+ #HUGE_VALF
+
+ `__bužtš_huge_v®f
+()
+
+ )
+
+43
+ #HUGE_VALL
+
+ `__bužtš_huge_v®l
+()
+
+ )
+
+44
+ #INFINITY
+
+ `__bužtš_šff
+()
+
+ )
+
+45
+ #NAN
+
+ `__bužtš_Çnf
+("")
+
+ )
+
+47
+ #HUGE_VALF
+ (()
+HUGE_VAL
+)
+
+ )
+
+48
+ #HUGE_VALL
+ (()
+HUGE_VAL
+)
+
+ )
+
+49
+ #INFINITY
+
+HUGE_VALF
+
+
+ )
+
+50
+__Çn
+[];
+
+51
+ #NAN
+ (*(*)(*)
+__Çn
+)
+
+ )
+
+54
+ #FP_INFINITE
+ 0x01
+
+ )
+
+55
+ #FP_NAN
+ 0x02
+
+ )
+
+56
+ #FP_NORMAL
+ 0x04
+
+ )
+
+57
+ #FP_SUBNORMAL
+ 0x08
+
+ )
+
+58
+ #FP_ZERO
+ 0x10
+
+ )
+
+60
+ #FP_ILOGB0
+ (-
+INT_MAX
+)
+
+ )
+
+61
+ #FP_ILOGBNAN
+
+INT_MAX
+
+
+ )
+
+63 #ifdef
+__FP_FAST_FMA
+
+
+64
+ #FP_FAST_FMA
+ 1
+
+ )
+
+67 #ifdef
+__FP_FAST_FMAF
+
+
+68
+ #FP_FAST_FMAF
+ 1
+
+ )
+
+71 #ifdef
+__FP_FAST_FMAL
+
+
+72
+ #FP_FAST_FMAL
+ 1
+
+ )
+
+75
+ #MATH_ERRNO
+ 1
+
+ )
+
+76
+ #MATH_ERREXCEPT
+ 2
+
+ )
+
+77
+ #m©h_”rhªdlšg
+
+MATH_ERREXCEPT
+
+
+ )
+
+79
+ #åþassify
+(
+x
+) \
+
+80 (( (
+x
+) == ()) ? \
+
+81
+ `__åþassifyf
+(
+x
+) \
+
+82 : ( (
+x
+) == ()) ? \
+
+83
+ `__åþassify
+(
+x
+) \
+
+84 :
+ `__åþassifyl
+(
+x
+))
+
+ )
+
+85
+ #isfš™e
+(
+x
+) \
+
+86 (( (
+x
+) == ()) ? \
+
+87
+ `__isfš™ef
+(
+x
+) \
+
+88 : ( (
+x
+) == ()) ? \
+
+89
+ `__isfš™e
+(
+x
+) \
+
+90 :
+ `__isfš™–
+(
+x
+))
+
+ )
+
+91
+ #i¢Üm®
+(
+x
+) \
+
+92 (( (
+x
+) == ()) ? \
+
+93
+ `__i¢Üm®f
+(
+x
+) \
+
+94 : ( (
+x
+) == ()) ? \
+
+95
+ `__i¢Üm®
+(
+x
+) \
+
+96 :
+ `__i¢Üm®l
+(
+x
+))
+
+ )
+
+97
+ #signb™
+(
+x
+) \
+
+98 (( (
+x
+) == ()) ? \
+
+99
+ `__signb™f
+(
+x
+) \
+
+100 : ( (
+x
+) == ()) ? \
+
+101
+ `__signb™
+(
+x
+) \
+
+102 :
+ `__signb™l
+(
+x
+))
+
+ )
+
+104
+ #isg»©”
+(
+x
+,
+y
+è(!
+ `isunÜd”ed
+((x), (y)è&& (xè> (y))
+
+ )
+
+105
+ #isg»©”equ®
+(
+x
+,
+y
+è(!
+ `isunÜd”ed
+((x), (y)è&& (xè>ð(y))
+
+ )
+
+106
+ #i¦ess
+(
+x
+,
+y
+è(!
+ `isunÜd”ed
+((x), (y)è&& (xè< (y))
+
+ )
+
+107
+ #i¦es£qu®
+(
+x
+,
+y
+è(!
+ `isunÜd”ed
+((x), (y)è&& (xè<ð(y))
+
+ )
+
+108
+ #i¦essg»©”
+(
+x
+,
+y
+è(!
+ `isunÜd”ed
+((x), (y)) && \
+
+109 ((
+x
+è> (
+y
+è|| (yè> (x)))
+
+ )
+
+110
+ #isunÜd”ed
+(
+x
+,
+y
+è(
+ `i¢ª
+(xè|| i¢ª(y))
+
+ )
+
+113
+ #isšf
+(
+x
+) \
+
+114 (( (
+x
+) == ()) ? \
+
+115
+ `__isšff
+(
+x
+) \
+
+116 : ( (
+x
+) == ()) ? \
+
+117
+ `__isšf
+(
+x
+) \
+
+118 :
+ `__isšæ
+(
+x
+))
+
+ )
+
+119
+ #i¢ª
+(
+x
+) \
+
+120 (( (
+x
+) == ()) ? \
+
+121
+ `__i¢ªf
+(
+x
+) \
+
+122 : ( (
+x
+) == ()) ? \
+
+123
+ `__i¢ª
+(
+x
+) \
+
+124 :
+ `__i¢ªl
+(
+x
+))
+
+ )
+
+129 #ià
+__BSD_VISIBLE
+ ||
+__XPG_VISIBLE
+
+
+130
+ #M_E
+ (()2.7182818284590452354è
+
+ )
+
+131
+ #M_LOG2E
+ (()1.4426950408889634074è
+
+ )
+
+132
+ #M_LOG10E
+ (()0.43429448190325182765è
+
+ )
+
+133
+ #M_LN2
+ (()0.69314718055994530942è
+
+ )
+
+134
+ #M_LN10
+ (()2.30258509299404568402è
+
+ )
+
+135
+ #M_PI
+ (()3.14159265358979323846è
+
+ )
+
+136
+ #M_PI_2
+ (()1.57079632679489661923è
+
+ )
+
+137
+ #M_PI_4
+ (()0.78539816339744830962è
+
+ )
+
+138
+ #M_1_PI
+ (()0.31830988618379067154è
+
+ )
+
+139
+ #M_2_PI
+ (()0.63661977236758134308è
+
+ )
+
+140
+ #M_2_SQRTPI
+ (()1.12837916709551257390è
+
+ )
+
+141
+ #M_SQRT2
+ (()1.41421356237309504880è
+
+ )
+
+142
+ #M_SQRT1_2
+ (()0.70710678118654752440è
+
+ )
+
+144
+ #MAXFLOAT
+ (()3.40282346638528860e+38)
+
+ )
+
+146
+signgam
+;
+
+149 #ià
+__POSIX_VISIBLE
+ >= 201403
+
+150
+ #M_El
+ 2.718281828459045235360287471352662498L
+
+ )
+
+151
+ #M_LOG2El
+ 1.442695040888963407359924681001892137L
+
+ )
+
+152
+ #M_LOG10El
+ 0.434294481903251827651128918916605082L
+
+ )
+
+153
+ #M_LN2l
+ 0.693147180559945309417232121458176568L
+
+ )
+
+154
+ #M_LN10l
+ 2.302585092994045684017991454684364208L
+
+ )
+
+155
+ #M_PIl
+ 3.141592653589793238462643383279502884L
+
+ )
+
+156
+ #M_PI_2l
+ 1.570796326794896619231321691639751442L
+
+ )
+
+157
+ #M_PI_4l
+ 0.785398163397448309615660845819875721L
+
+ )
+
+158
+ #M_1_PIl
+ 0.318309886183790671537767526745028724L
+
+ )
+
+159
+ #M_2_PIl
+ 0.636619772367581343075535053490057448L
+
+ )
+
+160
+ #M_2_SQRTPIl
+ 1.128379167095512573896158903121545172L
+
+ )
+
+161
+ #M_SQRT2l
+ 1.414213562373095048801688724209698079L
+
+ )
+
+162
+ #M_SQRT1_2l
+ 0.707106781186547524400844362104849039L
+
+ )
+
+165 #ià
+__BSD_VISIBLE
+
+
+166
+ #HUGE
+
+MAXFLOAT
+
+
+ )
+
+172
+acos
+();
+
+173
+asš
+();
+
+174
+©ª
+();
+
+175
+©ª2
+(, );
+
+176
+cos
+();
+
+177
+sš
+();
+
+178
+�n
+();
+
+180
+cosh
+();
+
+181
+sšh
+();
+
+182
+�nh
+();
+
+184
+exp
+();
+
+185
+äexp
+(, *);
+
+186
+ldexp
+(, );
+
+187
+log
+();
+
+188
+log10
+();
+
+189
+modf
+(, *);
+
+191
+pow
+(, );
+
+192
+sq¹
+();
+
+194
+ûž
+();
+
+195
+çbs
+();
+
+196
+æoÜ
+();
+
+197
+fmod
+(, );
+
+202 #ià
+__BSD_VISIBLE
+ ||
+__ISO_C_VISIBLE
+ >ð1999 ||
+__XPG_VISIBLE
+
+
+203
+acosh
+();
+
+204
+asšh
+();
+
+205
+©ªh
+();
+
+207
+exp2
+();
+
+208
+expm1
+();
+
+209
+žogb
+();
+
+210
+log1p
+();
+
+211
+log2
+();
+
+212
+logb
+();
+
+213
+sÿlbn
+(, );
+
+214
+sÿlbÊ
+(, );
+
+216
+cb¹
+();
+
+217
+hypÙ
+(, );
+
+219
+”f
+();
+
+220
+”fc
+();
+
+221
+lgamma
+();
+
+222
+tgamma
+();
+
+224
+ìbyšt
+();
+
+225
+ršt
+();
+
+226
+Ìšt
+();
+
+227
+Îršt
+();
+
+228
+round
+();
+
+229
+Ìound
+();
+
+230
+Îround
+();
+
+231
+Œunc
+();
+
+233
+»mašd”
+(, );
+
+234
+»mquo
+(, , *);
+
+236
+cÝysign
+(, );
+
+237
+Çn
+(const *);
+
+238
+Ãx�á”
+(, );
+
+239
+Ãx‰ow¬d
+(, );
+
+241
+fdim
+(, );
+
+242
+fmax
+(, );
+
+243
+fmš
+(, );
+
+245
+fma
+(, , );
+
+248 #ià
+__BSD_VISIBLE
+ ||
+__XPG_VISIBLE
+
+
+249
+j0
+();
+
+250
+j1
+();
+
+251
+jn
+(, );
+
+252
+sÿlb
+(, );
+
+253
+y0
+();
+
+254
+y1
+();
+
+255
+yn
+(, );
+
+258 #ià
+__BSD_VISIBLE
+ ||
+__XPG_VISIBLE
+ <= 500
+
+259
+gamma
+();
+
+265 #ià
+__BSD_VISIBLE
+
+
+266
+d»m
+(, );
+
+267
+fš™e
+();
+
+273
+gamma_r
+(, *);
+
+274
+lgamma_r
+(, *);
+
+276
+sšcos
+(, *, *);
+
+281
+signifiÿnd
+();
+
+287 #ià
+__ISO_C_VISIBLE
+ >= 1999
+
+288
+acosf
+();
+
+289
+asšf
+();
+
+290
+©ªf
+();
+
+291
+©ª2f
+(, );
+
+292
+cosf
+();
+
+293
+sšf
+();
+
+294
+�nf
+();
+
+296
+acoshf
+();
+
+297
+asšhf
+();
+
+298
+©ªhf
+();
+
+299
+coshf
+();
+
+300
+sšhf
+();
+
+301
+�nhf
+();
+
+303
+expf
+();
+
+304
+exp2f
+();
+
+305
+expm1f
+();
+
+306
+äexpf
+(, *);
+
+307
+žogbf
+();
+
+308
+ldexpf
+(, );
+
+309
+logf
+();
+
+310
+log10f
+();
+
+311
+log1pf
+();
+
+312
+log2f
+();
+
+313
+logbf
+();
+
+314
+modff
+(, *);
+
+315
+sÿlbnf
+(, );
+
+316
+sÿlbÊf
+(, );
+
+318
+cb¹f
+();
+
+319
+çbsf
+();
+
+320
+hypÙf
+(, );
+
+321
+powf
+(, );
+
+322
+sq¹f
+();
+
+324
+”ff
+();
+
+325
+”fcf
+();
+
+326
+lgammaf
+();
+
+327
+tgammaf
+();
+
+329
+ûžf
+();
+
+330
+æoÜf
+();
+
+331
+ìbyštf
+();
+
+332
+rštf
+();
+
+333
+Ìštf
+();
+
+334
+Îrštf
+();
+
+335
+roundf
+();
+
+336
+Ìoundf
+();
+
+337
+Îroundf
+();
+
+338
+Œuncf
+();
+
+340
+fmodf
+(, );
+
+341
+»mašd”f
+(, );
+
+342
+»mquof
+(, , *);
+
+344
+cÝysignf
+(, );
+
+345
+Çnf
+(const *);
+
+346
+Ãx�á”f
+(, );
+
+347
+Ãx‰ow¬df
+(, );
+
+349
+fdimf
+(, );
+
+350
+fmaxf
+(, );
+
+351
+fmšf
+(, );
+
+353
+fmaf
+(, , );
+
+356 #ià
+__BSD_VISIBLE
+ ||
+__XPG_VISIBLE
+
+
+357
+j0f
+();
+
+358
+j1f
+();
+
+359
+jnf
+(, );
+
+360
+sÿlbf
+(, );
+
+361
+y0f
+();
+
+362
+y1f
+();
+
+363
+ynf
+(, );
+
+366 #ià
+__BSD_VISIBLE
+ ||
+__XPG_VISIBLE
+ <= 500
+
+367
+gammaf
+();
+
+373 #ià
+__BSD_VISIBLE
+
+
+374
+d»mf
+(, );
+
+375
+fš™ef
+();
+
+376
+isšff
+();
+
+377
+i¢ªf
+();
+
+384
+gammaf_r
+(, *);
+
+385
+lgammaf_r
+(, *);
+
+387
+sšcosf
+(, *, *);
+
+392
+signifiÿndf
+();
+
+398 #ià
+__ISO_C_VISIBLE
+ >= 1999
+
+399
+aco¦
+();
+
+400
+asšl
+();
+
+401
+©ªl
+();
+
+402
+©ª2l
+(, );
+
+403
+co¦
+();
+
+404
+sšl
+();
+
+405
+�Æ
+();
+
+407
+acoshl
+();
+
+408
+asšhl
+();
+
+409
+©ªhl
+();
+
+410
+coshl
+();
+
+411
+sšhl
+();
+
+412
+�nhl
+();
+
+414
+ex¶
+();
+
+415
+exp2l
+();
+
+416
+expm1l
+();
+
+417
+äex¶
+(, *);
+
+418
+žogbl
+();
+
+419
+ldex¶
+(, );
+
+420
+logl
+();
+
+421
+log10l
+();
+
+422
+log1¶
+();
+
+423
+log2l
+();
+
+424
+logbl
+();
+
+425
+modæ
+(, *);
+
+426
+sÿlbÆ
+(, );
+
+427
+sÿlbÊl
+(, );
+
+429
+cb¹l
+();
+
+430
+çb¦
+();
+
+431
+hypÙl
+(, );
+
+432
+powl
+(, );
+
+433
+sq¹l
+();
+
+435
+Ӿ
+();
+
+436
+”fþ
+();
+
+437
+lgamm®
+();
+
+438
+tgamm®
+();
+
+440
+ûžl
+();
+
+441
+æoÜl
+();
+
+442
+ìbyšŽ
+();
+
+443
+ršŽ
+();
+
+444
+ÌšŽ
+();
+
+445
+ÎršŽ
+();
+
+446
+roundl
+();
+
+447
+Ìoundl
+();
+
+448
+Îroundl
+();
+
+449
+Œunþ
+();
+
+451
+fmodl
+(, );
+
+452
+»mašd”l
+(, );
+
+453
+»mquÞ
+(, , *);
+
+455
+cÝysigÆ
+(, );
+
+456
+ÇÆ
+(const *);
+
+457
+Ãx�á”l
+(, );
+
+458
+Ãx‰ow¬dl
+(, );
+
+460
+fdiml
+(, );
+
+461
+fmaxl
+(, );
+
+462
+fmšl
+(, );
+
+464
+fm®
+(, , );
+
+470 #ià
+__BSD_VISIBLE
+
+
+471
+sšco¦
+(, *, *);
+
+477
+__åþassify
+();
+
+478
+__åþassifyf
+();
+
+479
+__åþassifyl
+();
+
+480
+__isfš™e
+();
+
+481
+__isfš™ef
+();
+
+482
+__isfš™–
+();
+
+483
+__isšf
+();
+
+484
+__isšff
+();
+
+485
+__isšæ
+();
+
+486
+__i¢ª
+();
+
+487
+__i¢ªf
+();
+
+488
+__i¢ªl
+();
+
+489
+__i¢Üm®
+();
+
+490
+__i¢Üm®f
+();
+
+491
+__i¢Üm®l
+();
+
+492
+__signb™
+();
+
+493
+__signb™f
+();
+
+494
+__signb™l
+();
+
+495
+ g__END_DECLS
+
+
+ @/usr/include/stdarg.h
+
+18 #iâdeà
+_STDARG_H_
+
+
+19
+ #_STDARG_H_
+
+
+ )
+
+21
+ ~<sys/cdefs.h
+>
+
+25 #iâdeà
+__GNUC_VA_LIST
+
+
+26
+ #__GNUC_VA_LIST
+
+
+ )
+
+27
+__bužtš_va_li¡
+
+ t__gnuc_va_li¡
+;
+
+34
+ #va_¡¬t
+(
+
+,
+Ï¡
+è
+ `__bužtš_va_¡¬t
+(×p),†a¡)
+
+ )
+
+35
+ #va_’d
+(
+
+è
+ `__bužtš_va_’d
+(×p))
+
+ )
+
+36
+ #va_¬g
+(
+
+,
+ty³
+è
+ `__bužtš_va_¬g
+(×p),�y³)
+
+ )
+
+37
+ #__va_cÝy
+(
+d¡
+,
+¤c
+è
+ `__bužtš_va_cÝy
+((d¡),(¤c))
+
+ )
+
+39
+__gnuc_va_li¡
+
+ tva_li¡
+;
+
+41 #ià
+__ISO_C_VISIBLE
+ >= 1999
+
+42
+ #va_cÝy
+(
+d¡
+,
+¤c
+è
+ `__va_cÝy
+((d¡), (¤c))
+
+ )
+
+ @/usr/include/stdio.h
+
+38 #iâdef
+_STDIO_H_
+
+
+39
+ #_STDIO_H_
+
+
+ )
+
+41
+ ~<sys/cdefs.h
+>
+
+42
+ ~<sys/_nuÎ.h
+>
+
+43
+ ~<sys/_ty³s.h
+>
+
+45 #ià
+__BSD_VISIBLE
+ ||
+__POSIX_VISIBLE
+ ||
+__XPG_VISIBLE
+
+
+46
+ ~<sys/ty³s.h
+>
+
+49 #iâdef
+_SIZE_T_DEFINED_
+
+
+50
+ #_SIZE_T_DEFINED_
+
+
+ )
+
+51
+__size_t
+
+ tsize_t
+;
+
+54 #iâdef
+_OFF_T_DEFINED_
+
+
+55
+ #_OFF_T_DEFINED_
+
+
+ )
+
+56
+__off_t
+
+ toff_t
+;
+
+59
+ #_FSTDIO
+
+
+ )
+
+61
+off_t
+
+ tåos_t
+;
+
+70
+ s__sbuf
+ {
+
+71 *
+ m_ba£
+;
+
+72
+ m_size
+;
+
+99
+ s__sFILE
+ {
+
+100 *
+ m_p
+;
+
+101
+ m_r
+;
+
+102
+ m_w
+;
+
+103
+ m_æags
+;
+
+104
+ m_fže
+;
+
+105
+__sbuf
+
+ m_bf
+;
+
+106
+ m_lbfsize
+;
+
+109 *
+ m_cook›
+;
+
+110 (*
+ m_þo£
+)(*);
+
+111 (*
+ m_»ad
+)(*, *, );
+
+112
+åos_t
+ (*
+_£ek
+)(*,
+ måos_t
+, );
+
+113 (*
+ m_wr™e
+)(*, const *, );
+
+116
+__sbuf
+
+ m_ext
+;
+
+118 *
+ m_up
+;
+
+119
+ m_ur
+;
+
+122
+ m_ubuf
+[3];
+
+123
+ m_nbuf
+[1];
+
+126
+__sbuf
+
+ m_lb
+;
+
+129
+ m_blksize
+;
+
+130
+åos_t
+
+ m_off£t
+;
+
+131 }
+ tFILE
+;
+
+133
+__BEGIN_DECLS
+
+
+134
+FILE
+
+__sF
+[];
+
+135
+ g__END_DECLS
+
+
+137
+ #__SLBF
+ 0x0001
+
+ )
+
+138
+ #__SNBF
+ 0x0002
+
+ )
+
+139
+ #__SRD
+ 0x0004
+
+ )
+
+140
+ #__SWR
+ 0x0008
+
+ )
+
+142
+ #__SRW
+ 0x0010
+
+ )
+
+143
+ #__SEOF
+ 0x0020
+
+ )
+
+144
+ #__SERR
+ 0x0040
+
+ )
+
+145
+ #__SMBF
+ 0x0080
+
+ )
+
+146
+ #__SAPP
+ 0x0100
+
+ )
+
+147
+ #__SSTR
+ 0x0200
+
+ )
+
+148
+ #__SOPT
+ 0x0400
+
+ )
+
+149
+ #__SNPT
+ 0x0800
+
+ )
+
+150
+ #__SOFF
+ 0x1000
+
+ )
+
+151
+ #__SMOD
+ 0x2000
+
+ )
+
+152
+ #__SALC
+ 0x4000
+
+ )
+
+153
+ #__SIGN
+ 0x8000
+
+ )
+
+164
+ #_IOFBF
+ 0
+
+ )
+
+165
+ #_IOLBF
+ 1
+
+ )
+
+166
+ #_IONBF
+ 2
+
+ )
+
+168
+ #BUFSIZ
+ 1024
+
+ )
+
+170
+ #EOF
+ (-1)
+
+ )
+
+177
+ #FOPEN_MAX
+ 20
+
+ )
+
+178
+ #FILENAME_MAX
+ 1024
+
+ )
+
+181 #ià
+__BSD_VISIBLE
+ ||
+__XPG_VISIBLE
+
+
+182
+ #P_tmpdœ
+ "/tmp/"
+
+ )
+
+184
+ #L_tm²am
+ 1024
+
+ )
+
+185
+ #TMP_MAX
+ 0x7ffffffà
+
+ )
+
+187 #iâdeà
+SEEK_SET
+
+
+188
+ #SEEK_SET
+ 0
+
+ )
+
+190 #iâdeà
+SEEK_CUR
+
+
+191
+ #SEEK_CUR
+ 1
+
+ )
+
+193 #iâdeà
+SEEK_END
+
+
+194
+ #SEEK_END
+ 2
+
+ )
+
+197
+ #¡dš
+ (&
+__sF
+[0])
+
+ )
+
+198
+ #¡dout
+ (&
+__sF
+[1])
+
+ )
+
+199
+ #¡d”r
+ (&
+__sF
+[2])
+
+ )
+
+204
+__BEGIN_DECLS
+
+
+205
+þ—»¼
+(
+FILE
+ *);
+
+206 #ià
+__POSIX_VISIBLE
+ >= 200809
+
+207
+ $d´štf
+(, cÚ¡ *
+__»¡riù
+, ...)
+
+208
+ `__©Œibu‹__
+((
+ $__fÜm©__
+ (
+´štf
+, 2, 3)))
+
+209
+ `__©Œibu‹__
+((
+ `__nÚnuÎ__
+ (2)));
+
+211
+ `fþo£
+(
+FILE
+ *);
+
+212
+ `ãof
+(
+FILE
+ *);
+
+213
+ `ã¼Ü
+(
+FILE
+ *);
+
+214
+ `fæush
+(
+FILE
+ *);
+
+215
+ `fg‘c
+(
+FILE
+ *);
+
+216
+ `fg‘pos
+(
+FILE
+ *,
+åos_t
+ *);
+
+217 *
+ $fg‘s
+(*, ,
+FILE
+ *)
+
+218
+ `__©Œibu‹__
+((
+ `__bounded__
+ (
+__¡ršg__
+,1,2)));
+
+219
+FILE
+ *
+ `fÝ’
+(const *, const *);
+
+220
+ `årštf
+(
+FILE
+ *, cÚ¡ *
+__»¡riù
+, ...);
+
+221
+ `åutc
+(,
+FILE
+ *);
+
+222
+ `åuts
+(cÚ¡ *,
+FILE
+ *);
+
+223
+size_t
+
+ $ä—d
+(*,
+size_t
+, size_t,
+FILE
+ *)
+
+224
+ `__©Œibu‹__
+((
+ `__bounded__
+ (
+__size__
+,1,3,2)));
+
+225
+FILE
+ *
+ `äeÝ’
+(const *, const *, FILE *);
+
+226
+ `fsÿnf
+(
+FILE
+ *, const *, ...);
+
+227
+ `f£ek
+(
+FILE
+ *, , );
+
+228
+ `f£eko
+(
+FILE
+ *,
+off_t
+, );
+
+229
+ `f£�os
+(
+FILE
+ *, cÚ¡
+åos_t
+ *);
+
+230
+ `á–l
+(
+FILE
+ *);
+
+231
+off_t
+
+ `á–lo
+(
+FILE
+ *);
+
+232
+size_t
+
+ $fwr™e
+(cÚ¡ *,
+size_t
+, size_t,
+FILE
+ *)
+
+233
+ `__©Œibu‹__
+((
+ `__bounded__
+ (
+__size__
+,1,3,2)));
+
+234
+ `g‘c
+(
+FILE
+ *);
+
+235
+ `g‘ch¬
+();
+
+236 #ià
+__POSIX_VISIBLE
+ >= 200809
+
+237
+ssize_t
+
+ `g‘d–im
+(**
+__»¡riù
+,
+size_t
+ * __restrict, ,
+
+238
+FILE
+ *
+__»¡riù
+);
+
+239
+ssize_t
+
+ `g‘lše
+(**
+__»¡riù
+,
+size_t
+ * __restrict,
+
+240
+FILE
+ *
+__»¡riù
+);
+
+242 #ià
+__BSD_VISIBLE
+ && !
+ `defšed
+(
+__SYS_ERRLIST
+)
+
+243
+ #__SYS_ERRLIST
+
+
+ )
+
+245
+sys_ü
+;
+
+246 *
+sys_”¾i¡
+[];
+
+248
+ `³¼Ü
+(const *);
+
+249
+ `´štf
+(cÚ¡ *
+__»¡riù
+, ...);
+
+250
+ `putc
+(,
+FILE
+ *);
+
+251
+ `putch¬
+();
+
+252
+ `puts
+(const *);
+
+253
+ `»move
+(const *);
+
+254
+ `Ȃme
+(const *, const *);
+
+255 #ià
+__POSIX_VISIBLE
+ >= 200809
+
+256
+ `»Çm—t
+(, const *, , const *);
+
+258
+ `»wšd
+(
+FILE
+ *);
+
+259
+ `sÿnf
+(const *, ...);
+
+260
+ `£tbuf
+(
+FILE
+ *, *);
+
+261
+ `£tvbuf
+(
+FILE
+ *, *, ,
+size_t
+);
+
+262
+ `¥rštf
+(*
+__»¡riù
+, const * __restrict, ...);
+
+263
+ `ssÿnf
+(const *, const *, ...);
+
+264
+FILE
+ *
+ `tmpfže
+();
+
+265 *
+ `tm²am
+(*);
+
+266
+ `ung‘c
+(,
+FILE
+ *);
+
+267
+ `vårštf
+(
+FILE
+ *, cÚ¡ *
+__»¡riù
+,
+__va_li¡
+);
+
+268
+ `v´štf
+(cÚ¡ *
+__»¡riù
+,
+__va_li¡
+);
+
+269
+ `v¥rštf
+(*
+__»¡riù
+, cÚ¡ * __»¡riù,
+__va_li¡
+);
+
+270 #ià
+__POSIX_VISIBLE
+ >= 200809
+
+271
+ $vd´štf
+(, cÚ¡ *
+__»¡riù
+,
+__va_li¡
+)
+
+272
+ `__©Œibu‹__
+((
+ $__fÜm©__
+ (
+´štf
+, 2, 0)))
+
+273
+ `__©Œibu‹__
+((
+ `__nÚnuÎ__
+ (2)));
+
+276 #ià
+__ISO_C_VISIBLE
+ >ð1999 ||
+__XPG_VISIBLE
+ >ð500 ||
+__BSD_VISIBLE
+
+
+277
+ $¢´štf
+(*
+__»¡riù
+,
+size_t
+, const * __restrict, ...)
+
+278
+ `__©Œibu‹__
+((
+ $__fÜm©__
+ (
+´štf
+, 3, 4)))
+
+279
+ `__©Œibu‹__
+((
+ $__nÚnuÎ__
+ (3)))
+
+280
+ `__©Œibu‹__
+((
+ `__bounded__
+ (
+__¡ršg__
+,1,2)));
+
+281
+ $v¢´štf
+(*
+__»¡riù
+,
+size_t
+, const * __restrict,
+
+282
+__va_li¡
+)
+
+283
+ `__©Œibu‹__
+((
+ $__fÜm©__
+ (
+´štf
+, 3, 0)))
+
+284
+ `__©Œibu‹__
+((
+ $__nÚnuÎ__
+ (3)))
+
+285
+ `__©Œibu‹__
+((
+ `__bounded__
+(
+__¡ršg__
+,1,2)));
+
+288 #ià
+__ISO_C_VISIBLE
+ >ð1999 ||
+__BSD_VISIBLE
+
+
+289
+ $vfsÿnf
+(
+FILE
+ *, cÚ¡ *,
+__va_li¡
+)
+
+290
+ `__©Œibu‹__
+((
+ $__fÜm©__
+ (
+sÿnf
+, 2, 0)))
+
+291
+ `__©Œibu‹__
+((
+ `__nÚnuÎ__
+ (2)));
+
+292
+ $vsÿnf
+(cÚ¡ *,
+__va_li¡
+)
+
+293
+ `__©Œibu‹__
+((
+ $__fÜm©__
+ (
+sÿnf
+, 1, 0)))
+
+294
+ `__©Œibu‹__
+((
+ `__nÚnuÎ__
+ (1)));
+
+295
+ $vssÿnf
+(cÚ¡ *, cÚ¡ *,
+__va_li¡
+)
+
+296
+ `__©Œibu‹__
+((
+ $__fÜm©__
+ (
+sÿnf
+, 2, 0)))
+
+297
+ `__©Œibu‹__
+((
+ `__nÚnuÎ__
+ (2)));
+
+300
+__END_DECLS
+
+
+306 #ià
+__BSD_VISIBLE
+ ||
+__POSIX_VISIBLE
+ ||
+__XPG_VISIBLE
+
+
+307
+ #L_ù”mid
+ 1024
+
+ )
+
+309
+__BEGIN_DECLS
+
+
+310 *
+ `ù”mid
+(*);
+
+311
+FILE
+ *
+ `fdÝ’
+(, const *);
+
+312
+ `fž’o
+(
+FILE
+ *);
+
+314 #ià
+__POSIX_VISIBLE
+ >= 199209
+
+315
+ `pþo£
+(
+FILE
+ *);
+
+316
+FILE
+ *
+ `pÝ’
+(const *, const *);
+
+319 #ià
+__POSIX_VISIBLE
+ >= 199506
+
+320
+ `æockfže
+(
+FILE
+ *);
+
+321
+ `árylockfže
+(
+FILE
+ *);
+
+322
+ `fuÆockfže
+(
+FILE
+ *);
+
+328
+ `g‘c_uÆocked
+(
+FILE
+ *);
+
+329
+ `g‘ch¬_uÆocked
+();
+
+330
+ `putc_uÆocked
+(,
+FILE
+ *);
+
+331
+ `putch¬_uÆocked
+();
+
+334 #ià
+__POSIX_VISIBLE
+ >= 200809
+
+335
+FILE
+ *
+ `fmemÝ’
+(*,
+size_t
+, const *);
+
+336
+FILE
+ *
+ `Ý’_mem¡»am
+(**,
+size_t
+ *);
+
+339 #ià
+__XPG_VISIBLE
+
+
+340 *
+ `‹m²am
+(const *, const *);
+
+343 #ià
+__POSIX_VISIBLE
+ >ð202405 ||
+__BSD_VISIBLE
+
+
+344
+ $a¥rštf
+(**
+__»¡riù
+, const * __restrict, ...)
+
+345
+ `__©Œibu‹__
+((
+ $__fÜm©__
+ (
+´štf
+, 2, 3)))
+
+346
+ `__©Œibu‹__
+((
+ `__nÚnuÎ__
+ (2)));
+
+347
+ $va¥rštf
+(**
+__»¡riù
+, cÚ¡ * __»¡riù,
+__va_li¡
+)
+
+348
+ `__©Œibu‹__
+((
+ $__fÜm©__
+ (
+´štf
+, 2, 0)))
+
+349
+ `__©Œibu‹__
+((
+ `__nÚnuÎ__
+ (2)));
+
+351
+__END_DECLS
+
+
+358 #ià
+__BSD_VISIBLE
+
+
+359
+__BEGIN_DECLS
+
+
+360 *
+ `fg‘Ê
+(
+FILE
+ *,
+size_t
+ *);
+
+361
+ `åurge
+(
+FILE
+ *);
+
+362
+ `g‘w
+(
+FILE
+ *);
+
+363
+ `putw
+(,
+FILE
+ *);
+
+364
+ `£tbufãr
+(
+FILE
+ *, *, );
+
+365
+ `£Žšebuf
+(
+FILE
+ *);
+
+366
+__END_DECLS
+
+
+371
+__BEGIN_DECLS
+
+
+372
+FILE
+ *
+ `funÝ’
+(const *,
+
+375
+ $off_t
+ (*)(*,
+off_t
+, ),
+
+377
+__END_DECLS
+
+
+378
+ #äÝ’
+(
+cook›
+,
+â
+è
+ `funÝ’
+(cook›, fn, 0, 0, 0)
+
+ )
+
+379
+ #fwÝ’
+(
+cook›
+,
+â
+è
+ `funÝ’
+(cook›, 0, fn, 0, 0)
+
+ )
+
+385
+__BEGIN_DECLS
+
+
+386
+ `__¤g‘
+(
+FILE
+ *);
+
+387
+ `__swbuf
+(,
+FILE
+ *);
+
+388
+__END_DECLS
+
+
+394
+ #__sg‘c
+(
+p
+è(--Õ)->
+_r
+ < 0 ?
+ `__¤g‘
+Õè: ()(*Õ)->
+_p
+++))
+
+ )
+
+395
+__šlše
+
+ $__¥utc
+(
+_c
+,
+FILE
+ *
+_p
+) {
+
+396 ià(--
+_p
+->
+_w
+ >ð0 || (_p->_w >ð_p->
+_lbfsize
+ && ()
+_c
+ != '\n'))
+
+397 (*
+_p
+->_p++ =
+_c
+);
+
+399 (
+ `__swbuf
+(
+_c
+,
+_p
+));
+
+400
+ }
+}
+
+402
+ #__sãof
+(
+p
+è((Õ)->
+_æags
+ &
+__SEOF
+è!ð0)
+
+ )
+
+403
+ #__sã¼Ü
+(
+p
+è((Õ)->
+_æags
+ &
+__SERR
+è!ð0)
+
+ )
+
+404
+ #__sþ—»¼
+(
+p
+è(()(Õ)->
+_æags
+ &ð~(
+__SERR
+|
+__SEOF
+)))
+
+ )
+
+405
+ #__sfž’o
+(
+p
+è(Õ)->
+_fže
+)
+
+ )
+
+407
+__i¡h»aded
+;
+
+409
+ #ãof
+(
+p
+è(!
+__i¡h»aded
+ ?
+ `__sãof
+Õè: (
+ãof
+)Õ))
+
+ )
+
+410
+ #ã¼Ü
+(
+p
+è(!
+__i¡h»aded
+ ?
+ `__sã¼Ü
+Õè: (
+ã¼Ü
+)Õ))
+
+ )
+
+411
+ #þ—»¼
+(
+p
+è(!
+__i¡h»aded
+ ?
+ `__sþ—»¼
+Õè: (
+þ—»¼
+)Õ))
+
+ )
+
+413 #ià
+__POSIX_VISIBLE
+
+
+414
+ #fž’o
+(
+p
+è(!
+__i¡h»aded
+ ?
+ `__sfž’o
+Õè: (
+fž’o
+)Õ))
+
+ )
+
+417
+ #g‘c
+(
+å
+è(!
+__i¡h»aded
+ ?
+ `__sg‘c
+(åè: (
+g‘c
+)(å))
+
+ )
+
+419 #ià
+__BSD_VISIBLE
+
+
+424
+ #putc
+(
+x
+,
+å
+è(!
+__i¡h»aded
+ ?
+ `__¥utc
+(x, fpè: (
+putc
+)(x, fp))
+
+ )
+
+427 #ià
+__POSIX_VISIBLE
+ >= 199506
+
+428
+ #g‘c_uÆocked
+(
+å
+è
+ `__sg‘c
+(å)
+
+ )
+
+433 #ià
+__BSD_VISIBLE
+
+
+434
+ #putc_uÆocked
+(
+x
+,
+å
+è
+ `__¥utc
+(x, fp)
+
+ )
+
+438
+ #g‘ch¬
+(è
+ `g‘c
+(
+¡dš
+)
+
+ )
+
+439
+ #putch¬
+(
+x
+è
+ `putc
+(x,
+¡dout
+)
+
+ )
+
+440
+ #g‘ch¬_uÆocked
+(è
+ `g‘c_uÆocked
+(
+¡dš
+)
+
+ )
+
+441
+ #putch¬_uÆocked
+(
+c
+è
+ `putc_uÆocked
+(c,
+¡dout
+)
+
+ )
+
+ @/usr/include/stdlib.h
+
+35 #iâdeà
+_STDLIB_H_
+
+
+36
+ #_STDLIB_H_
+
+
+ )
+
+38
+ ~<sys/cdefs.h
+>
+
+39
+ ~<sys/_nuÎ.h
+>
+
+40
+ ~<machše/_ty³s.h
+>
+
+41 #ià
+__BSD_VISIBLE
+
+
+42
+ ~<sys/ty³s.h
+>
+
+45 #iâdef
+_SIZE_T_DEFINED_
+
+
+46
+ #_SIZE_T_DEFINED_
+
+
+ )
+
+47
+__size_t
+
+ tsize_t
+;
+
+51 #ià!
+defšed
+(
+_WCHAR_T_DEFINED_
+è&& !defšed(
+__ýlu¥lus
+)
+
+52
+ #_WCHAR_T_DEFINED_
+
+
+ )
+
+53
+__wch¬_t
+
+ twch¬_t
+;
+
+57
+ mquÙ
+;
+
+58
+ m»m
+;
+
+59 }
+ tdiv_t
+;
+
+62
+ mquÙ
+;
+
+63
+ m»m
+;
+
+64 }
+ tldiv_t
+;
+
+66 #ià
+__ISO_C_VISIBLE
+ >= 1999
+
+68
+ mquÙ
+;
+
+69
+ m»m
+;
+
+70 }
+ tÎdiv_t
+;
+
+73 #ià
+__BSD_VISIBLE
+
+
+75
+quad_t
+
+ mquÙ
+;
+
+76
+quad_t
+
+ m»m
+;
+
+77 }
+ tqdiv_t
+;
+
+80
+ #EXIT_FAILURE
+ 1
+
+ )
+
+81
+ #EXIT_SUCCESS
+ 0
+
+ )
+
+83
+ #RAND_MAX
+ 0x7fffffff
+
+ )
+
+85
+ #MB_CUR_MAX
+
+ `__mb_cur_max
+()
+
+ )
+
+91 #ifdeà
+abs
+
+
+92 #undeà
+abs
+
+
+93 #w¬nšg
+abs
+
+maüo
+
+cÞlides
+
+w™h
+‡bs(è
+´ÙÙy³
+,
+undefššg
+
+
+96
+__BEGIN_DECLS
+
+
+97
+__d—d
+
+abÜt
+();
+
+98
+abs
+();
+
+99
+©ex™
+((*)());
+
+100
+ `©of
+(const *);
+
+101
+ `©oi
+(const *);
+
+102
+ `©Þ
+(const *);
+
+103 *
+ `b£¬ch
+(cÚ¡ *, cÚ¡ *,
+size_t
+, size_t,
+
+105 *
+ `ÿÎoc
+(
+size_t
+, size_t);
+
+106
+div_t
+
+ `div
+(, );
+
+107
+__d—d
+
+ `ex™
+();
+
+108
+__d—d
+
+ `_Ex™
+();
+
+109
+ `ä“
+(*);
+
+110 *
+ `g‘’v
+(const *);
+
+111
+ `Ïbs
+();
+
+112
+ldiv_t
+
+ `ldiv
+(, );
+
+113 *
+ `m®loc
+(
+size_t
+);
+
+114 #ià
+__BSD_VISIBLE
+
+
+115
+ $ä“z”o
+(*,
+size_t
+)
+
+116
+ `__©Œibu‹__
+ ((
+ `__bounded__
+(
+__bufãr__
+,1,2)));
+
+117 *
+ `ÿÎoc_cÚû®
+(
+size_t
+, size_t);
+
+118 *
+ `m®loc_cÚû®
+(
+size_t
+);
+
+119 *
+ `»ÿÎoÿ¼ay
+(*,
+size_t
+, size_t, size_t);
+
+121
+ `qsÜt
+(*,
+size_t
+, size_t, (*)(const *, const *));
+
+122
+ `¿nd
+();
+
+123 *
+ `»®loc
+(*,
+size_t
+);
+
+124
+ `¤ªd
+();
+
+125
+ `¤ªd_d‘”mši¡ic
+();
+
+126
+ `¡¹od
+(cÚ¡ *
+__»¡riù
+, **__restrict);
+
+127
+ `¡¹of
+(cÚ¡ *
+__»¡riù
+, **__restrict);
+
+128
+ `¡¹Þ
+(cÚ¡ *
+__»¡riù
+, **__restrict, );
+
+130
+ `¡¹Þd
+(cÚ¡ *
+__»¡riù
+, **__restrict);
+
+132
+ `¡¹oul
+(cÚ¡ *
+__»¡riù
+, **__restrict, );
+
+133
+ `sy¡em
+(const *);
+
+135
+size_t
+
+ `__mb_cur_max
+();
+
+136
+ `mbËn
+(cÚ¡ *,
+size_t
+);
+
+137
+size_t
+
+ `mb¡owcs
+(
+wch¬_t
+ *, const *, size_t);
+
+138
+ `wùomb
+(*,
+wch¬_t
+);
+
+139
+ `mbtowc
+(
+wch¬_t
+ *, cÚ¡ *,
+size_t
+);
+
+140
+size_t
+
+ `wc¡ombs
+(*, cÚ¡
+wch¬_t
+ *, size_t);
+
+145 #ià
+__BSD_VISIBLE
+ ||
+__POSIX_VISIBLE
+ >ð199506 ||
+ `defšed
+(
+_REENTRANT
+)
+
+146
+ `¿nd_r
+(*);
+
+149 #ià
+__BSD_VISIBLE
+ ||
+__XPG_VISIBLE
+ >= 400
+
+150
+ `d¿nd48
+();
+
+151
+ `ӻd48
+([3]);
+
+152
+ `j¿nd48
+([3]);
+
+153
+ `lcÚg48
+([7]);
+
+154
+ `lcÚg48_d‘”mši¡ic
+([7]);
+
+155
+ `̪d48
+();
+
+156
+ `m¿nd48
+();
+
+157
+ `Īd48
+([3]);
+
+158 *
+ `£ed48
+([3]);
+
+159 *
+ `£ed48_d‘”mši¡ic
+([3]);
+
+160
+ `¤ªd48
+();
+
+161
+ `¤ªd48_d‘”mši¡ic
+();
+
+163
+ `pu‹nv
+(*);
+
+170 #ià
+__BSD_VISIBLE
+ ||
+__XPG_VISIBLE
+ < 700
+
+171 *
+ `ecvt
+(, , *, *);
+
+172 *
+ `fcvt
+(, , *, *);
+
+173 *
+ `gcvt
+(, , *);
+
+174 #ià
+__BSD_VISIBLE
+ ||
+__XPG_VISIBLE
+ >= 420
+
+175 *
+ `mk‹mp
+(*);
+
+179 #ià
+__BSD_VISIBLE
+ ||
+__XPG_VISIBLE
+ >= 420
+
+180
+ `a64l
+(const *);
+
+181 *
+ `l64a
+();
+
+183 *
+ $𙡩e
+(, *,
+size_t
+)
+
+184
+ `__©Œibu‹__
+((
+ `__bounded__
+ (
+__¡ršg__
+,2,3)));
+
+185
+ `¿ndom
+();
+
+186 *
+ `£t¡©e
+(*);
+
+187
+ `¤ªdom
+();
+
+188
+ `¤ªdom_d‘”mši¡ic
+();
+
+190 *
+ $»®·th
+(const *, *)
+
+191
+ `__©Œibu‹__
+((
+ `__bounded__
+ (
+__mšby‹s__
+,2,1024)));
+
+196 #ià
+__BSD_VISIBLE
+ ||
+__XPG_VISIBLE
+ < 600
+
+197
+ `‰y¦Ù
+();
+
+198 *
+ `v®loc
+(
+size_t
+);
+
+205 #ià
+__BSD_VISIBLE
+ ||
+__XPG_VISIBLE
+ >ð420 ||
+__POSIX_VISIBLE
+ >= 200809
+
+206
+ `mk¡emp
+(*);
+
+212 #ià
+__ISO_C_VISIBLE
+ >= 1999
+
+214
+ `©Þl
+(const *);
+
+216
+ `Îabs
+();
+
+217
+Îdiv_t
+
+
+218
+ `Îdiv
+(, );
+
+220
+ `¡¹Þl
+(cÚ¡ *
+__»¡riù
+, **__restrict, );
+
+222
+ `¡¹ouÎ
+(cÚ¡ *
+__»¡riù
+, **__restrict, );
+
+225 #ià
+__ISO_C_VISIBLE
+ >= 2011
+
+227
+ `®igÃd_®loc
+(
+size_t
+, size_t);
+
+233 #ià
+__BSD_VISIBLE
+ ||
+__POSIX_VISIBLE
+ >= 200112
+
+234
+ `posix_mem®ign
+(**,
+size_t
+, size_t);
+
+235
+ `£‹nv
+(const *, const *, );
+
+236
+ `un£‹nv
+(const *);
+
+238 #ià
+__XPG_VISIBLE
+ >ð420 ||
+__POSIX_VISIBLE
+ >= 200112
+
+239 *
+ `±¢ame
+();
+
+240
+ `g¿Á±
+();
+
+241
+ `uÆock±
+();
+
+243 #ià
+__POSIX_VISIBLE
+ >= 200112
+
+244
+ `posix_Ý’±
+();
+
+250 #ià
+__BSD_VISIBLE
+ ||
+__POSIX_VISIBLE
+ >= 200809
+
+251 *
+ `mkd‹mp
+(*);
+
+254 #ià
+__XPG_VISIBLE
+ >ð420 ||
+__POSIX_VISIBLE
+ >= 200809
+
+255
+ `g‘subÝt
+(**, * const *, **);
+
+261 #ià
+__POSIX_VISIBLE
+ >ð202405 ||
+__BSD_VISIBLE
+
+
+262
+ `mko¡emp
+(*, );
+
+263 *
+ `»®loÿ¼ay
+(*,
+size_t
+, size_t);
+
+266 #ià
+__BSD_VISIBLE
+
+
+267
+ #®loÿ
+(
+n
+è
+ `__bužtš_®loÿ
+Ò)
+
+ )
+
+269 *
+ `g‘bsize
+(*, *);
+
+270 *
+ `cg‘ÿp
+(*, const *, );
+
+271
+ `cg‘þo£
+();
+
+272
+ `cg‘’t
+(**, **, const *);
+
+273
+ `cg‘fœ¡
+(**, **);
+
+274
+ `cg‘m©ch
+(*, const *);
+
+275
+ `cg‘Ãxt
+(**, **);
+
+276
+ `cg‘num
+(*, const *, *);
+
+277
+ `cg‘£t
+(const *);
+
+278
+ `cg‘u£db
+();
+
+279
+ `cg‘¡r
+(*, const *, **);
+
+280
+ `cg‘u¡r
+(*, const *, **);
+
+282
+ `d«mÚ
+(, );
+
+283 *
+ `devÇme
+(
+dev_t
+,
+mode_t
+);
+
+284
+ `g‘lßdavg
+([], );
+
+287
+ `g‘´ogÇme
+();
+
+288
+ `£�rogÇme
+(const *);
+
+290 *
+sub�rg
+;
+
+292 *
+ `mkd‹mps
+(*, );
+
+293
+ `mk¡emps
+(*, );
+
+294
+ `mko¡emps
+(*, , );
+
+296
+ `h—psÜt
+(*,
+size_t
+, size_t, (*)(const *, const *));
+
+297
+ `m”gesÜt
+(*,
+size_t
+, size_t, (*)(const *, const *));
+
+298
+ `¿dixsÜt
+(const **, , const *,
+
+300
+ `¤adixsÜt
+(const **, , const *,
+
+303
+ `¤ªdomdev
+();
+
+305
+ `¡¹Úum
+(const *, , , const **);
+
+307
+ $£�roù™Ë
+(const *, ...)
+
+308
+ `__©Œibu‹__
+((
+ `__fÜm©__
+ (
+__´štf__
+, 1, 2)));
+
+310
+quad_t
+
+ `qabs
+(quad_t);
+
+311
+qdiv_t
+
+ `qdiv
+(
+quad_t
+, quad_t);
+
+312
+quad_t
+
+ `¡¹oq
+(cÚ¡ *
+__»¡riù
+, **__restrict, );
+
+313
+u_quad_t
+
+ `¡¹ouq
+(cÚ¡ *
+__»¡riù
+, **__restrict, );
+
+315
+ušt32_t
+
+ `¬c4¿ndom
+();
+
+316
+ušt32_t
+
+ `¬c4¿ndom_unifÜm
+(uint32_t);
+
+317
+ $¬c4¿ndom_buf
+(*,
+size_t
+)
+
+318
+ `__©Œibu‹__
+((
+ `__bounded__
+ (
+__bufãr__
+,1,2)));
+
+322
+__END_DECLS
+
+
+ @/usr/include/time.h
+
+41 #iâdeà
+_TIME_H_
+
+
+42
+ #_TIME_H_
+
+
+ )
+
+44
+ ~<sys/cdefs.h
+>
+
+45
+ ~<sys/_nuÎ.h
+>
+
+46
+ ~<sys/_ty³s.h
+>
+
+47
+ ~<sys/_time.h
+>
+
+49 #iâdef
+_CLOCK_T_DEFINED_
+
+
+50
+ #_CLOCK_T_DEFINED_
+
+
+ )
+
+51
+__þock_t
+
+ tþock_t
+;
+
+54 #iâdef
+_TIME_T_DEFINED_
+
+
+55
+ #_TIME_T_DEFINED_
+
+
+ )
+
+56
+__time_t
+
+ ttime_t
+;
+
+59 #iâdef
+_SIZE_T_DEFINED_
+
+
+60
+ #_SIZE_T_DEFINED_
+
+
+ )
+
+61
+__size_t
+
+ tsize_t
+;
+
+64 #ià
+__POSIX_VISIBLE
+ > 0 && __POSIX_VISIBLE < 200112 ||
+__BSD_VISIBLE
+
+
+69
+ #CLK_TCK
+ 100
+
+ )
+
+72 #ià
+__POSIX_VISIBLE
+ >= 199309
+
+73 #iâdef
+_CLOCKID_T_DEFINED_
+
+
+74
+ #_CLOCKID_T_DEFINED_
+
+
+ )
+
+75
+__þockid_t
+
+ tþockid_t
+;
+
+78 #iâdef
+_TIMER_T_DEFINED_
+
+
+79
+ #_TIMER_T_DEFINED_
+
+
+ )
+
+80
+__tim”_t
+
+ ttim”_t
+;
+
+84 #ià
+__POSIX_VISIBLE
+ >= 200112
+
+85 #iâdef
+_PID_T_DEFINED_
+
+
+86
+ #_PID_T_DEFINED_
+
+
+ )
+
+87
+__pid_t
+
+ tpid_t
+;
+
+91 #ià
+__POSIX_VISIBLE
+ >= 200809
+
+92 #iâdef
+_LOCALE_T_DEFINED_
+
+
+93
+ #_LOCALE_T_DEFINED_
+
+
+ )
+
+94 *
+ tloÿË_t
+;
+
+98
+ stm
+ {
+
+99
+ mtm_£c
+;
+
+100
+ mtm_mš
+;
+
+101
+ mtm_hour
+;
+
+102
+ mtm_mday
+;
+
+103
+ mtm_mÚ
+;
+
+104
+ mtm_y—r
+;
+
+105
+ mtm_wday
+;
+
+106
+ mtm_yday
+;
+
+107
+ mtm_isd¡
+;
+
+108
+ mtm_gmtoff
+;
+
+109 *
+ mtm_zÚe
+;
+
+112
+__BEGIN_DECLS
+
+
+113 *
+asùime
+(cÚ¡
+tm
+ *);
+
+114
+þock_t
+
+þock
+();
+
+115 *
+ùime
+(cÚ¡
+time_t
+ *);
+
+116
+difáime
+(
+time_t
+,�ime_t);
+
+117
+tm
+ *
+gmtime
+(cÚ¡
+time_t
+ *);
+
+118
+tm
+ *
+loÿÉime
+(cÚ¡
+time_t
+ *);
+
+119
+time_t
+
+mktime
+(
+tm
+ *);
+
+120
+size_t
+
+ $¡ráime
+(*
+__»¡riù
+,
+size_t
+, const *__restrict,
+
+121 cÚ¡
+tm
+ *
+__»¡riù
+)
+
+122
+ `__©Œibu‹__
+ ((
+ `__bounded__
+(
+__¡ršg__
+,1,2)));
+
+123
+time_t
+
+ `time
+(time_t *);
+
+125 #ià
+__XPG_VISIBLE
+ >= 300
+
+126
+daylight
+;
+
+127
+timezÚe
+;
+
+129 #ià
+__XPG_VISIBLE
+ >= 400
+
+130 *
+ `¡½time
+(cÚ¡ *
+__»¡riù
+, const *__restrict,
+
+131
+tm
+ *
+__»¡riù
+);
+
+134 #ià
+__POSIX_VISIBLE
+ >= 199506
+
+135 *
+ $asùime_r
+(cÚ¡
+tm
+ *
+__»¡riù
+, *__restrict)
+
+136
+ `__©Œibu‹__
+ ((
+ `__bounded__
+(
+__mšby‹s__
+,2,26)));
+
+137 *
+ $ùime_r
+(cÚ¡
+time_t
+ *, *)
+
+138
+ `__©Œibu‹__
+ ((
+ `__bounded__
+(
+__mšby‹s__
+,2,26)));
+
+139
+tm
+ *
+ `gmtime_r
+(cÚ¡
+time_t
+ *
+__»¡riù
+, tm *__restrict);
+
+140
+tm
+ *
+ `loÿÉime_r
+(cÚ¡
+time_t
+ *
+__»¡riù
+, tm *__restrict);
+
+143 #ià
+__POSIX_VISIBLE
+
+
+144 *
+tzÇme
+[2];
+
+145
+ `tz£t
+();
+
+148 #ià
+__POSIX_VISIBLE
+ >= 199309
+
+149
+ `þock_g‘»s
+(
+þockid_t
+,
+time¥ec
+ *);
+
+150
+ `þock_g‘time
+(
+þockid_t
+,
+time¥ec
+ *);
+
+151
+ `þock_£‰ime
+(
+þockid_t
+, cÚ¡
+time¥ec
+ *);
+
+152
+ `Çno¦“p
+(cÚ¡
+time¥ec
+ *, timespec *);
+
+155 #ià
+__POSIX_VISIBLE
+ >= 200112
+
+156
+ `þock_g‘ýuþockid
+(
+pid_t
+,
+þockid_t
+ *);
+
+159 #ià
+__POSIX_VISIBLE
+ >= 200809
+
+160
+size_t
+
+ $¡ráime_l
+(*
+__»¡riù
+,
+size_t
+, const *__restrict,
+
+161 cÚ¡
+tm
+ *
+__»¡riù
+,
+loÿË_t
+)
+
+162
+ `__©Œibu‹__
+ ((
+ `__bounded__
+(
+__¡ršg__
+,1,2)));
+
+165 #ià
+__ISO_C_VISIBLE
+ >= 2011
+
+166
+ #TIME_UTC
+ 1
+
+ )
+
+167
+ `time¥ec_g‘
+(
+time¥ec
+ *
+_ts
+,
+_ba£
+);
+
+170 #ià
+__BSD_VISIBLE
+
+
+171
+ `tz£tw®l
+();
+
+172
+time_t
+
+ `tim–oÿl
+(
+tm
+ *);
+
+173
+time_t
+
+ `timegm
+(
+tm
+ *);
+
+174
+time_t
+
+ `timeoff
+(
+tm
+ *, const );
+
+176
+__END_DECLS
+
+
+ @/usr/include/unistd.h
+
+35 #iâdeà
+_UNISTD_H_
+
+
+36
+ #_UNISTD_H_
+
+
+ )
+
+38
+ ~<sys/_nuÎ.h
+>
+
+39
+ ~<sys/ty³s.h
+>
+
+40
+ ~<sys/uni¡d.h
+>
+
+42
+ #STDIN_FILENO
+ 0
+
+ )
+
+43
+ #STDOUT_FILENO
+ 1
+
+ )
+
+44
+ #STDERR_FILENO
+ 2
+
+ )
+
+46 #ià
+__XPG_VISIBLE
+ ||
+__POSIX_VISIBLE
+ >= 200112
+
+47
+ #F_ULOCK
+ 0
+
+ )
+
+48
+ #F_LOCK
+ 1
+
+ )
+
+49
+ #F_TLOCK
+ 2
+
+ )
+
+50
+ #F_TEST
+ 3
+
+ )
+
+65
+ #_POSIX_ADVISORY_INFO
+ (-1)
+
+ )
+
+66
+ #_POSIX_ASYNCHRONOUS_IO
+ (-1)
+
+ )
+
+67
+ #_POSIX_BARRIERS
+ 200112L
+
+ )
+
+68
+ #_POSIX_CHOWN_RESTRICTED
+ 1
+
+ )
+
+69
+ #_POSIX_CLOCK_SELECTION
+ (-1)
+
+ )
+
+70
+ #_POSIX_CPUTIME
+ 200809L
+
+ )
+
+71
+ #_POSIX_FSYNC
+ 200112L
+
+ )
+
+72
+ #_POSIX_IPV6
+ 0
+
+ )
+
+73
+ #_POSIX_JOB_CONTROL
+ 1
+
+ )
+
+74
+ #_POSIX_MAPPED_FILES
+ 200112L
+
+ )
+
+75
+ #_POSIX_MEMLOCK
+ 200112L
+
+ )
+
+76
+ #_POSIX_MEMLOCK_RANGE
+ 200112L
+
+ )
+
+77
+ #_POSIX_MEMORY_PROTECTION
+ 200112L
+
+ )
+
+78
+ #_POSIX_MESSAGE_PASSING
+ (-1)
+
+ )
+
+79
+ #_POSIX_MONOTONIC_CLOCK
+ 200112L
+
+ )
+
+80
+ #_POSIX_NO_TRUNC
+ 1
+
+ )
+
+81
+ #_POSIX_PRIORITIZED_IO
+ (-1)
+
+ )
+
+82
+ #_POSIX_PRIORITY_SCHEDULING
+ (-1)
+
+ )
+
+83
+ #_POSIX_RAW_SOCKETS
+ 200112L
+
+ )
+
+84
+ #_POSIX_READER_WRITER_LOCKS
+ 200112L
+
+ )
+
+85
+ #_POSIX_REALTIME_SIGNALS
+ (-1)
+
+ )
+
+86
+ #_POSIX_REGEXP
+ 1
+
+ )
+
+87
+ #_POSIX_SAVED_IDS
+ 1
+
+ )
+
+88
+ #_POSIX_SEMAPHORES
+ 200112L
+
+ )
+
+89
+ #_POSIX_SHARED_MEMORY_OBJECTS
+ 200809L
+
+ )
+
+90
+ #_POSIX_SHELL
+ 1
+
+ )
+
+91
+ #_POSIX_SPAWN
+ 200112L
+
+ )
+
+92
+ #_POSIX_SPIN_LOCKS
+ 200112L
+
+ )
+
+93
+ #_POSIX_SPORADIC_SERVER
+ (-1)
+
+ )
+
+94
+ #_POSIX_SYNCHRONIZED_IO
+ (-1)
+
+ )
+
+95
+ #_POSIX_THREAD_ATTR_STACKADDR
+ 200112L
+
+ )
+
+96
+ #_POSIX_THREAD_ATTR_STACKSIZE
+ 200112L
+
+ )
+
+97
+ #_POSIX_THREAD_CPUTIME
+ 200809L
+
+ )
+
+98
+ #_POSIX_THREAD_PRIO_INHERIT
+ (-1)
+
+ )
+
+99
+ #_POSIX_THREAD_PRIO_PROTECT
+ (-1)
+
+ )
+
+100
+ #_POSIX_THREAD_PRIORITY_SCHEDULING
+ (-1)
+
+ )
+
+101
+ #_POSIX_THREAD_PROCESS_SHARED
+ (-1)
+
+ )
+
+102
+ #_POSIX_THREAD_ROBUST_PRIO_INHERIT
+ (-1)
+
+ )
+
+103
+ #_POSIX_THREAD_ROBUST_PRIO_PROTECT
+ (-1)
+
+ )
+
+104
+ #_POSIX_THREAD_SAFE_FUNCTIONS
+ 200112L
+
+ )
+
+105
+ #_POSIX_THREAD_SPORADIC_SERVER
+ (-1)
+
+ )
+
+106
+ #_POSIX_THREADS
+ 200112L
+
+ )
+
+107
+ #_POSIX_TIMEOUTS
+ 200112L
+
+ )
+
+108
+ #_POSIX_TIMERS
+ (-1)
+
+ )
+
+109
+ #_POSIX_TRACE
+ (-1)
+
+ )
+
+110
+ #_POSIX_TRACE_EVENT_FILTER
+ (-1)
+
+ )
+
+111
+ #_POSIX_TRACE_INHERIT
+ (-1)
+
+ )
+
+112
+ #_POSIX_TRACE_LOG
+ (-1)
+
+ )
+
+113
+ #_POSIX_TYPED_MEMORY_OBJECTS
+ (-1)
+
+ )
+
+114
+ #_POSIX2_C_BIND
+ 200112L
+
+ )
+
+115
+ #_POSIX2_C_DEV
+ (-1è
+
+ )
+
+116
+ #_POSIX2_CHAR_TERM
+ 1
+
+ )
+
+117
+ #_POSIX2_FORT_DEV
+ (-1è
+
+ )
+
+118
+ #_POSIX2_FORT_RUN
+ (-1è
+
+ )
+
+119
+ #_POSIX2_LOCALEDEF
+ (-1)
+
+ )
+
+120
+ #_POSIX2_PBS
+ (-1)
+
+ )
+
+121
+ #_POSIX2_PBS_ACCOUNTING
+ (-1)
+
+ )
+
+122
+ #_POSIX2_PBS_CHECKPOINT
+ (-1)
+
+ )
+
+123
+ #_POSIX2_PBS_LOCATE
+ (-1)
+
+ )
+
+124
+ #_POSIX2_PBS_MESSAGE
+ (-1)
+
+ )
+
+125
+ #_POSIX2_PBS_TRACK
+ (-1)
+
+ )
+
+126
+ #_POSIX2_SW_DEV
+ 200112L
+
+ )
+
+127
+ #_POSIX2_UPE
+ 200112L
+
+ )
+
+128
+ #_POSIX_V6_ILP32_OFF32
+ (-1)
+
+ )
+
+129
+ #_POSIX_V6_ILP32_OFFBIG
+ 0
+
+ )
+
+130
+ #_POSIX_V6_LP64_OFF64
+ 0
+
+ )
+
+131
+ #_POSIX_V6_LPBIG_OFFBIG
+ 0
+
+ )
+
+132
+ #_POSIX_V7_ILP32_OFF32
+ (-1)
+
+ )
+
+133
+ #_POSIX_V7_ILP32_OFFBIG
+ 0
+
+ )
+
+134
+ #_POSIX_V7_LP64_OFF64
+ 0
+
+ )
+
+135
+ #_POSIX_V7_LPBIG_OFFBIG
+ 0
+
+ )
+
+137
+ #_XOPEN_CRYPT
+ 1
+
+ )
+
+138
+ #_XOPEN_ENH_I18N
+ (-1è
+
+ )
+
+139
+ #_XOPEN_LEGACY
+ (-1)
+
+ )
+
+140
+ #_XOPEN_REALTIME
+ (-1)
+
+ )
+
+141
+ #_XOPEN_REALTIME_THREADS
+ (-1)
+
+ )
+
+142
+ #_XOPEN_SHM
+ 1
+
+ )
+
+143
+ #_XOPEN_STREAMS
+ (-1)
+
+ )
+
+144
+ #_XOPEN_UUCP
+ (-1)
+
+ )
+
+145
+ #_XOPEN_UNIX
+ (-1)
+
+ )
+
+148
+ #_POSIX2_VERSION
+ 200809L
+
+ )
+
+153
+ #_SC_ARG_MAX
+ 1
+
+ )
+
+154
+ #_SC_CHILD_MAX
+ 2
+
+ )
+
+155
+ #_SC_CLK_TCK
+ 3
+
+ )
+
+156
+ #_SC_NGROUPS_MAX
+ 4
+
+ )
+
+157
+ #_SC_OPEN_MAX
+ 5
+
+ )
+
+158
+ #_SC_JOB_CONTROL
+ 6
+
+ )
+
+159
+ #_SC_SAVED_IDS
+ 7
+
+ )
+
+160
+ #_SC_VERSION
+ 8
+
+ )
+
+161
+ #_SC_BC_BASE_MAX
+ 9
+
+ )
+
+162
+ #_SC_BC_DIM_MAX
+ 10
+
+ )
+
+163
+ #_SC_BC_SCALE_MAX
+ 11
+
+ )
+
+164
+ #_SC_BC_STRING_MAX
+ 12
+
+ )
+
+165
+ #_SC_COLL_WEIGHTS_MAX
+ 13
+
+ )
+
+166
+ #_SC_EXPR_NEST_MAX
+ 14
+
+ )
+
+167
+ #_SC_LINE_MAX
+ 15
+
+ )
+
+168
+ #_SC_RE_DUP_MAX
+ 16
+
+ )
+
+169
+ #_SC_2_VERSION
+ 17
+
+ )
+
+170
+ #_SC_2_C_BIND
+ 18
+
+ )
+
+171
+ #_SC_2_C_DEV
+ 19
+
+ )
+
+172
+ #_SC_2_CHAR_TERM
+ 20
+
+ )
+
+173
+ #_SC_2_FORT_DEV
+ 21
+
+ )
+
+174
+ #_SC_2_FORT_RUN
+ 22
+
+ )
+
+175
+ #_SC_2_LOCALEDEF
+ 23
+
+ )
+
+176
+ #_SC_2_SW_DEV
+ 24
+
+ )
+
+177
+ #_SC_2_UPE
+ 25
+
+ )
+
+178
+ #_SC_STREAM_MAX
+ 26
+
+ )
+
+179
+ #_SC_TZNAME_MAX
+ 27
+
+ )
+
+180
+ #_SC_PAGESIZE
+ 28
+
+ )
+
+181
+ #_SC_PAGE_SIZE
+
+_SC_PAGESIZE
+
+
+ )
+
+182
+ #_SC_FSYNC
+ 29
+
+ )
+
+183
+ #_SC_XOPEN_SHM
+ 30
+
+ )
+
+184
+ #_SC_SEM_NSEMS_MAX
+ 31
+
+ )
+
+185
+ #_SC_SEM_VALUE_MAX
+ 32
+
+ )
+
+186
+ #_SC_HOST_NAME_MAX
+ 33
+
+ )
+
+187
+ #_SC_MONOTONIC_CLOCK
+ 34
+
+ )
+
+188
+ #_SC_2_PBS
+ 35
+
+ )
+
+189
+ #_SC_2_PBS_ACCOUNTING
+ 36
+
+ )
+
+190
+ #_SC_2_PBS_CHECKPOINT
+ 37
+
+ )
+
+191
+ #_SC_2_PBS_LOCATE
+ 38
+
+ )
+
+192
+ #_SC_2_PBS_MESSAGE
+ 39
+
+ )
+
+193
+ #_SC_2_PBS_TRACK
+ 40
+
+ )
+
+194
+ #_SC_ADVISORY_INFO
+ 41
+
+ )
+
+195
+ #_SC_AIO_LISTIO_MAX
+ 42
+
+ )
+
+196
+ #_SC_AIO_MAX
+ 43
+
+ )
+
+197
+ #_SC_AIO_PRIO_DELTA_MAX
+ 44
+
+ )
+
+198
+ #_SC_ASYNCHRONOUS_IO
+ 45
+
+ )
+
+199
+ #_SC_ATEXIT_MAX
+ 46
+
+ )
+
+200
+ #_SC_BARRIERS
+ 47
+
+ )
+
+201
+ #_SC_CLOCK_SELECTION
+ 48
+
+ )
+
+202
+ #_SC_CPUTIME
+ 49
+
+ )
+
+203
+ #_SC_DELAYTIMER_MAX
+ 50
+
+ )
+
+204
+ #_SC_IOV_MAX
+ 51
+
+ )
+
+205
+ #_SC_IPV6
+ 52
+
+ )
+
+206
+ #_SC_MAPPED_FILES
+ 53
+
+ )
+
+207
+ #_SC_MEMLOCK
+ 54
+
+ )
+
+208
+ #_SC_MEMLOCK_RANGE
+ 55
+
+ )
+
+209
+ #_SC_MEMORY_PROTECTION
+ 56
+
+ )
+
+210
+ #_SC_MESSAGE_PASSING
+ 57
+
+ )
+
+211
+ #_SC_MQ_OPEN_MAX
+ 58
+
+ )
+
+212
+ #_SC_MQ_PRIO_MAX
+ 59
+
+ )
+
+213
+ #_SC_PRIORITIZED_IO
+ 60
+
+ )
+
+214
+ #_SC_PRIORITY_SCHEDULING
+ 61
+
+ )
+
+215
+ #_SC_RAW_SOCKETS
+ 62
+
+ )
+
+216
+ #_SC_READER_WRITER_LOCKS
+ 63
+
+ )
+
+217
+ #_SC_REALTIME_SIGNALS
+ 64
+
+ )
+
+218
+ #_SC_REGEXP
+ 65
+
+ )
+
+219
+ #_SC_RTSIG_MAX
+ 66
+
+ )
+
+220
+ #_SC_SEMAPHORES
+ 67
+
+ )
+
+221
+ #_SC_SHARED_MEMORY_OBJECTS
+ 68
+
+ )
+
+222
+ #_SC_SHELL
+ 69
+
+ )
+
+223
+ #_SC_SIGQUEUE_MAX
+ 70
+
+ )
+
+224
+ #_SC_SPAWN
+ 71
+
+ )
+
+225
+ #_SC_SPIN_LOCKS
+ 72
+
+ )
+
+226
+ #_SC_SPORADIC_SERVER
+ 73
+
+ )
+
+227
+ #_SC_SS_REPL_MAX
+ 74
+
+ )
+
+228
+ #_SC_SYNCHRONIZED_IO
+ 75
+
+ )
+
+229
+ #_SC_SYMLOOP_MAX
+ 76
+
+ )
+
+230
+ #_SC_THREAD_ATTR_STACKADDR
+ 77
+
+ )
+
+231
+ #_SC_THREAD_ATTR_STACKSIZE
+ 78
+
+ )
+
+232
+ #_SC_THREAD_CPUTIME
+ 79
+
+ )
+
+233
+ #_SC_THREAD_DESTRUCTOR_ITERATIONS
+ 80
+
+ )
+
+234
+ #_SC_THREAD_KEYS_MAX
+ 81
+
+ )
+
+235
+ #_SC_THREAD_PRIO_INHERIT
+ 82
+
+ )
+
+236
+ #_SC_THREAD_PRIO_PROTECT
+ 83
+
+ )
+
+237
+ #_SC_THREAD_PRIORITY_SCHEDULING
+ 84
+
+ )
+
+238
+ #_SC_THREAD_PROCESS_SHARED
+ 85
+
+ )
+
+239
+ #_SC_THREAD_ROBUST_PRIO_INHERIT
+ 86
+
+ )
+
+240
+ #_SC_THREAD_ROBUST_PRIO_PROTECT
+ 87
+
+ )
+
+241
+ #_SC_THREAD_SPORADIC_SERVER
+ 88
+
+ )
+
+242
+ #_SC_THREAD_STACK_MIN
+ 89
+
+ )
+
+243
+ #_SC_THREAD_THREADS_MAX
+ 90
+
+ )
+
+244
+ #_SC_THREADS
+ 91
+
+ )
+
+245
+ #_SC_TIMEOUTS
+ 92
+
+ )
+
+246
+ #_SC_TIMER_MAX
+ 93
+
+ )
+
+247
+ #_SC_TIMERS
+ 94
+
+ )
+
+248
+ #_SC_TRACE
+ 95
+
+ )
+
+249
+ #_SC_TRACE_EVENT_FILTER
+ 96
+
+ )
+
+250
+ #_SC_TRACE_EVENT_NAME_MAX
+ 97
+
+ )
+
+251
+ #_SC_TRACE_INHERIT
+ 98
+
+ )
+
+252
+ #_SC_TRACE_LOG
+ 99
+
+ )
+
+253
+ #_SC_GETGR_R_SIZE_MAX
+ 100
+
+ )
+
+254
+ #_SC_GETPW_R_SIZE_MAX
+ 101
+
+ )
+
+255
+ #_SC_LOGIN_NAME_MAX
+ 102
+
+ )
+
+256
+ #_SC_THREAD_SAFE_FUNCTIONS
+ 103
+
+ )
+
+257
+ #_SC_TRACE_NAME_MAX
+ 104
+
+ )
+
+258
+ #_SC_TRACE_SYS_MAX
+ 105
+
+ )
+
+259
+ #_SC_TRACE_USER_EVENT_MAX
+ 106
+
+ )
+
+260
+ #_SC_TTY_NAME_MAX
+ 107
+
+ )
+
+261
+ #_SC_TYPED_MEMORY_OBJECTS
+ 108
+
+ )
+
+262
+ #_SC_V6_ILP32_OFF32
+ 109
+
+ )
+
+263
+ #_SC_V6_ILP32_OFFBIG
+ 110
+
+ )
+
+264
+ #_SC_V6_LP64_OFF64
+ 111
+
+ )
+
+265
+ #_SC_V6_LPBIG_OFFBIG
+ 112
+
+ )
+
+266
+ #_SC_V7_ILP32_OFF32
+ 113
+
+ )
+
+267
+ #_SC_V7_ILP32_OFFBIG
+ 114
+
+ )
+
+268
+ #_SC_V7_LP64_OFF64
+ 115
+
+ )
+
+269
+ #_SC_V7_LPBIG_OFFBIG
+ 116
+
+ )
+
+270
+ #_SC_XOPEN_CRYPT
+ 117
+
+ )
+
+271
+ #_SC_XOPEN_ENH_I18N
+ 118
+
+ )
+
+272
+ #_SC_XOPEN_LEGACY
+ 119
+
+ )
+
+273
+ #_SC_XOPEN_REALTIME
+ 120
+
+ )
+
+274
+ #_SC_XOPEN_REALTIME_THREADS
+ 121
+
+ )
+
+275
+ #_SC_XOPEN_STREAMS
+ 122
+
+ )
+
+276
+ #_SC_XOPEN_UNIX
+ 123
+
+ )
+
+277
+ #_SC_XOPEN_UUCP
+ 124
+
+ )
+
+278
+ #_SC_XOPEN_VERSION
+ 125
+
+ )
+
+280
+ #_SC_PHYS_PAGES
+ 500
+
+ )
+
+281
+ #_SC_AVPHYS_PAGES
+ 501
+
+ )
+
+282
+ #_SC_NPROCESSORS_CONF
+ 502
+
+ )
+
+283
+ #_SC_NPROCESSORS_ONLN
+ 503
+
+ )
+
+286
+ #_CS_PATH
+ 1
+
+ )
+
+287
+ #_CS_POSIX_V6_ILP32_OFF32_CFLAGS
+ 2
+
+ )
+
+288
+ #_CS_POSIX_V6_ILP32_OFF32_LDFLAGS
+ 3
+
+ )
+
+289
+ #_CS_POSIX_V6_ILP32_OFF32_LIBS
+ 4
+
+ )
+
+290
+ #_CS_POSIX_V6_ILP32_OFFBIG_CFLAGS
+ 5
+
+ )
+
+291
+ #_CS_POSIX_V6_ILP32_OFFBIG_LDFLAGS
+ 6
+
+ )
+
+292
+ #_CS_POSIX_V6_ILP32_OFFBIG_LIBS
+ 7
+
+ )
+
+293
+ #_CS_POSIX_V6_LP64_OFF64_CFLAGS
+ 8
+
+ )
+
+294
+ #_CS_POSIX_V6_LP64_OFF64_LDFLAGS
+ 9
+
+ )
+
+295
+ #_CS_POSIX_V6_LP64_OFF64_LIBS
+ 10
+
+ )
+
+296
+ #_CS_POSIX_V6_LPBIG_OFFBIG_CFLAGS
+ 11
+
+ )
+
+297
+ #_CS_POSIX_V6_LPBIG_OFFBIG_LDFLAGS
+ 12
+
+ )
+
+298
+ #_CS_POSIX_V6_LPBIG_OFFBIG_LIBS
+ 13
+
+ )
+
+299
+ #_CS_POSIX_V6_WIDTH_RESTRICTED_ENVS
+ 14
+
+ )
+
+300
+ #_CS_V6_ENV
+ 15
+
+ )
+
+301
+ #_CS_POSIX_V7_ILP32_OFF32_CFLAGS
+ 16
+
+ )
+
+302
+ #_CS_POSIX_V7_ILP32_OFF32_LDFLAGS
+ 17
+
+ )
+
+303
+ #_CS_POSIX_V7_ILP32_OFF32_LIBS
+ 18
+
+ )
+
+304
+ #_CS_POSIX_V7_ILP32_OFFBIG_CFLAGS
+ 19
+
+ )
+
+305
+ #_CS_POSIX_V7_ILP32_OFFBIG_LDFLAGS
+ 20
+
+ )
+
+306
+ #_CS_POSIX_V7_ILP32_OFFBIG_LIBS
+ 21
+
+ )
+
+307
+ #_CS_POSIX_V7_LP64_OFF64_CFLAGS
+ 22
+
+ )
+
+308
+ #_CS_POSIX_V7_LP64_OFF64_LDFLAGS
+ 23
+
+ )
+
+309
+ #_CS_POSIX_V7_LP64_OFF64_LIBS
+ 24
+
+ )
+
+310
+ #_CS_POSIX_V7_LPBIG_OFFBIG_CFLAGS
+ 25
+
+ )
+
+311
+ #_CS_POSIX_V7_LPBIG_OFFBIG_LDFLAGS
+ 26
+
+ )
+
+312
+ #_CS_POSIX_V7_LPBIG_OFFBIG_LIBS
+ 27
+
+ )
+
+313
+ #_CS_POSIX_V7_THREADS_CFLAGS
+ 28
+
+ )
+
+314
+ #_CS_POSIX_V7_THREADS_LDFLAGS
+ 29
+
+ )
+
+315
+ #_CS_POSIX_V7_WIDTH_RESTRICTED_ENVS
+ 30
+
+ )
+
+316
+ #_CS_V7_ENV
+ 31
+
+ )
+
+318 #iâdef
+_INTPTR_T_DEFINED_
+
+
+319
+ #_INTPTR_T_DEFINED_
+
+
+ )
+
+320
+__š�Œ_t
+
+ tš�Œ_t
+;
+
+323
+__BEGIN_DECLS
+
+
+324
+__d—d
+
+_ex™
+();
+
+325
+acûss
+(const *, );
+
+326
+®¬m
+();
+
+327
+chdœ
+(const *);
+
+328
+chown
+(cÚ¡ *,
+uid_t
+,
+gid_t
+);
+
+329
+þo£
+();
+
+330
+dup
+();
+
+331
+dup2
+(, );
+
+332
+ $exeþ
+(const *, const *, ...)
+
+333
+ `__©Œibu‹__
+((
+__£Áš–__
+));
+
+334
+ `exeþe
+(const *, const *, ...);
+
+335
+ $exeþp
+(const *, const *, ...)
+
+336
+ `__©Œibu‹__
+((
+__£Áš–__
+));
+
+337
+ `execv
+(const *, *const *);
+
+338
+ `execve
+(const *, *const *, *const *);
+
+339
+ `execvp
+(const *, *const *);
+
+340 #ià
+__BSD_VISIBLE
+
+
+341
+ `execv³
+(const *, *const *, *const *);
+
+343
+pid_t
+
+ `fÜk
+();
+
+344
+ `å©hcÚf
+(, );
+
+345 *
+ $g‘cwd
+(*,
+size_t
+)
+
+346
+ `__©Œibu‹__
+((
+ `__bounded__
+(
+__¡ršg__
+,1,2)));
+
+347
+gid_t
+
+ `g‘egid
+();
+
+348
+uid_t
+
+ `g‘euid
+();
+
+349
+gid_t
+
+ `g‘gid
+();
+
+350
+ `g‘groups
+(,
+gid_t
+ *);
+
+351 *
+ `g‘logš
+();
+
+352
+pid_t
+
+ `g‘pg½
+();
+
+353
+pid_t
+
+ `g‘pid
+();
+
+354
+pid_t
+
+ `g‘µid
+();
+
+355
+uid_t
+
+ `g‘uid
+();
+
+356
+ `i§‰y
+();
+
+357
+ `lšk
+(const *, const *);
+
+358
+off_t
+
+ `l£ek
+(, off_t, );
+
+359
+ `·thcÚf
+(const *, );
+
+360 #ià
+__BSD_VISIBLE
+
+
+361
+ `·thcÚçt
+(, const *, , );
+
+363
+ `·u£
+();
+
+364
+ `p�e
+(*);
+
+365
+ssize_t
+
+ $»ad
+(, *,
+size_t
+)
+
+366
+ `__©Œibu‹__
+((
+ `__bounded__
+(
+__bufãr__
+,2,3)));
+
+367
+ `rmdœ
+(const *);
+
+368
+ `£tgid
+(
+gid_t
+);
+
+369
+ `£tuid
+(
+uid_t
+);
+
+370
+ `¦“p
+();
+
+371
+ `syscÚf
+();
+
+372
+pid_t
+
+ `tcg‘pg½
+();
+
+373
+ `tc£�g½
+(,
+pid_t
+);
+
+374 *
+ `‰yÇme
+();
+
+375
+ `uÆšk
+(const *);
+
+376
+ssize_t
+
+ $wr™e
+(, cÚ¡ *,
+size_t
+)
+
+377
+ `__©Œibu‹__
+((
+ `__bounded__
+(
+__bufãr__
+,2,3)));
+
+379 #ià
+__POSIX_VISIBLE
+ ||
+__XPG_VISIBLE
+ >= 300
+
+380
+pid_t
+
+ `£tsid
+();
+
+381
+ `£�gid
+(
+pid_t
+,…id_t);
+
+384 #ià
+__POSIX_VISIBLE
+ >ð199209 ||
+__XPG_VISIBLE
+
+
+385
+size_t
+
+ $cÚf¡r
+(, *,
+size_t
+)
+
+386
+ `__©Œibu‹__
+((
+ `__bounded__
+(
+__¡ršg__
+,2,3)));
+
+387 #iâdeà
+_GETOPT_DEFINED_
+
+
+388
+ #_GETOPT_DEFINED_
+
+
+ )
+
+389
+ `g‘Ýt
+(, * const *, const *);
+
+390 *
+�rg
+;
+
+391
+Ý‹¼
+,
+Ýtšd
+,
+ÝtÝt
+,
+ÝŒe£t
+;
+
+395 #ià
+__POSIX_VISIBLE
+ >ð199506 ||
+__XPG_VISIBLE
+
+
+396
+ `fsync
+();
+
+397
+ `árunÿ‹
+(,
+off_t
+);
+
+398
+ $g‘logš_r
+(*,
+size_t
+)
+
+399
+ `__©Œibu‹__
+((
+ `__bounded__
+(
+__¡ršg__
+,1,2)));
+
+400
+ssize_t
+
+ $»adlšk
+(cÚ¡ *
+__»¡riù
+, * __»¡riù,
+size_t
+)
+
+401
+ `__©Œibu‹__
+ ((
+ `__bounded__
+(
+__¡ršg__
+,2,3)));
+
+403 #ià
+__POSIX_VISIBLE
+ >= 199506
+
+404
+ `fd©async
+();
+
+407 #ià
+__XPG_VISIBLE
+ ||
+__BSD_VISIBLE
+
+
+408 *
+ `üy±
+(const *, const *);
+
+409
+ `fchdœ
+();
+
+410
+ `fchown
+(,
+uid_t
+,
+gid_t
+);
+
+411
+ `g‘ho¡id
+();
+
+412 *
+ $g‘wd
+(*)
+
+413
+ `__©Œibu‹__
+ ((
+ `__bounded__
+(
+__mšby‹s__
+,1,1024)));
+
+414
+ `lchown
+(cÚ¡ *,
+uid_t
+,
+gid_t
+);
+
+415
+ `mk¡emp
+(*);
+
+416 *
+ `mk‹mp
+(*);
+
+417
+ `niû
+();
+
+418
+ `£Œegid
+(
+gid_t
+, gid_t);
+
+419
+ `£Œeuid
+(
+uid_t
+, uid_t);
+
+420
+ `swab
+(cÚ¡ *
+__»¡riù
+, *__»¡riù,
+ssize_t
+);
+
+421
+ `sync
+();
+
+422
+ `Œunÿ‹
+(cÚ¡ *,
+off_t
+);
+
+423
+u£cÚds_t
+
+ `u®¬m
+(useconds_t, useconds_t);
+
+424
+ `u¦“p
+(
+u£cÚds_t
+);
+
+425
+pid_t
+
+ `vfÜk
+();
+
+428 #ià
+__POSIX_VISIBLE
+ >ð200809 ||
+__XPG_VISIBLE
+ >= 420
+
+429
+pid_t
+
+ `g‘pgid
+(pid_t);
+
+430
+pid_t
+
+ `g‘sid
+(pid_t);
+
+433 #ià
+__XPG_VISIBLE
+ >= 500
+
+434
+ssize_t
+
+ $´—d
+(, *,
+size_t
+,
+off_t
+)
+
+435
+ `__©Œibu‹__
+((
+ `__bounded__
+(
+__bufãr__
+,2,3)));
+
+436
+ssize_t
+
+ $pwr™e
+(, cÚ¡ *,
+size_t
+,
+off_t
+)
+
+437
+ `__©Œibu‹__
+((
+ `__bounded__
+(
+__bufãr__
+,2,3)));
+
+438
+ $‰yÇme_r
+(, *,
+size_t
+)
+
+439
+ `__©Œibu‹__
+((
+ `__bounded__
+(
+__¡ršg__
+,2,3)));
+
+442 #ià
+__BSD_VISIBLE
+ ||
+__XPG_VISIBLE
+ <= 500
+
+444
+ `brk
+(*);
+
+445
+ `chroÙ
+(const *);
+
+446
+ `g‘d�bËsize
+();
+
+447
+ `g‘·gesize
+();
+
+448 *
+ `g‘·ss
+(const *);
+
+449 *
+ `sbrk
+();
+
+452 #ià
+__POSIX_VISIBLE
+ >ð200112 ||
+__XPG_VISIBLE
+ >= 420
+
+453
+ `lockf
+(, ,
+off_t
+);
+
+456 #ià
+__POSIX_VISIBLE
+ >ð200112 ||
+__XPG_VISIBLE
+ >ð420 ||
+__BSD_VISIBLE
+
+
+457
+ `symlšk
+(const *, const *);
+
+458
+ $g‘ho¡Çme
+(*,
+size_t
+)
+
+459
+ `__©Œibu‹__
+ ((
+ `__bounded__
+(
+__¡ršg__
+,1,2)));
+
+460
+ `£‹gid
+(
+gid_t
+);
+
+461
+ `£‹uid
+(
+uid_t
+);
+
+464 #ià
+__POSIX_VISIBLE
+ >= 200809
+
+465
+ `çcûs§t
+(, const *, , );
+
+466
+ `fchowÇt
+(, cÚ¡ *,
+uid_t
+,
+gid_t
+, );
+
+467
+ `lšk©
+(, const *, , const *, );
+
+468
+ssize_t
+
+ $»adlšk©
+(, cÚ¡ *, *,
+size_t
+)
+
+469
+ `__©Œibu‹__
+ ((
+ `__bounded__
+(
+__¡ršg__
+,3,4)));
+
+470
+ `symlšk©
+(const *, , const *);
+
+471
+ `uÆšk©
+(, const *, );
+
+474 #ià
+__POSIX_VISIBLE
+ >ð202405 ||
+__BSD_VISIBLE
+
+
+475
+ `g‘’ŒÝy
+(*,
+size_t
+);
+
+477 #ià
+__XPG_VISIBLE
+ >ð800 ||
+__BSD_VISIBLE
+
+
+478
+ `g‘»sgid
+(
+gid_t
+ *, gid_t *, gid_t *);
+
+479
+ `g‘»suid
+(
+uid_t
+ *, uid_t *, uid_t *);
+
+480
+ `£Œesgid
+(
+gid_t
+, gid_t, gid_t);
+
+481
+ `£Œesuid
+(
+uid_t
+, uid_t, uid_t);
+
+484 #ià
+__BSD_VISIBLE
+
+
+485
+ `dup3
+(, , );
+
+486
+ `p�e2
+([2], );
+
+489 #ià
+__BSD_VISIBLE
+
+
+490
+ `acù
+(const *);
+
+491
+ `þo£äom
+();
+
+492
+ `üy±_check·ss
+(const *, const *);
+
+493
+ `üy±_Ãwhash
+(cÚ¡ *, cÚ¡ *, *,
+size_t
+);
+
+494
+ `’du£rsh–l
+();
+
+495 *
+ `fæag¡o¡r
+(
+u_št32_t
+);
+
+496
+ $g‘domašÇme
+(*,
+size_t
+)
+
+497
+ `__©Œibu‹__
+ ((
+ `__bounded__
+(
+__¡ršg__
+,1,2)));
+
+498
+ `g‘d�bËcouÁ
+();
+
+499
+ `g‘grou¶i¡
+(cÚ¡ *,
+gid_t
+, gid_t *, *);
+
+500
+mode_t
+
+ `g‘mode
+(const *, mode_t);
+
+501
+pid_t
+
+ `g‘thrid
+();
+
+502
+ `g‘thºame
+(
+pid_t
+, *,
+size_t
+);
+
+503 *
+ `g‘u£rsh–l
+();
+
+504
+ `š™groups
+(cÚ¡ *,
+gid_t
+);
+
+505
+ `is£tugid
+();
+
+506 *
+ `mkd‹mp
+(*);
+
+507
+ `mk¡emps
+(*, );
+
+508
+ `nfssvc
+(, *);
+
+509
+ $´ofž
+(*,
+size_t
+, , )
+
+510
+ `__©Œibu‹__
+ ((
+ `__bounded__
+(
+__¡ršg__
+,1,2)));
+
+511
+ `quÙaùl
+(const *, , , *);
+
+512
+ `rcmd
+(**, , const *,
+
+514
+ `rcmd_af
+(**, , const *,
+
+516
+ `rcmdsh
+(**, , const *,
+
+518
+ `»boÙ
+();
+
+519
+ `»voke
+(const *);
+
+520
+ `¼esvpÜt
+(*);
+
+521
+ `¼esvpÜt_af
+(*, );
+
+522
+ `ru£rok
+(const *, , const *, const *);
+
+523
+ `£tdomašÇme
+(cÚ¡ *,
+size_t
+);
+
+524
+ `£tgroups
+(, cÚ¡
+gid_t
+ *);
+
+525
+ `£tho¡id
+();
+
+526
+ `£tho¡Çme
+(cÚ¡ *,
+size_t
+);
+
+527
+ `£Žogš
+(const *);
+
+528 *
+ `£tmode
+(const *);
+
+529
+ `£�g½
+(
+pid_t
+
+_pid
+,…id_ˆ
+_pg½
+);
+
+530
+ `£‰hºame
+(
+pid_t
+, const *);
+
+531
+ `£tu£rsh–l
+();
+
+532
+ `¡¹ofæags
+(**,
+u_št32_t
+ *, u_int32_t *);
+
+533
+ `swùl
+(
+cmd
+, cÚ¡ *
+¬g
+,
+misc
+);
+
+534
+ `¶edge
+(const *, const *);
+
+535
+ `unvež
+(const *, const *);
+
+536
+pid_t
+
+ `__tfÜk_th»ad
+(cÚ¡
+__tfÜk
+ *,
+size_t
+, (*)(*),
+
+539
+__END_DECLS
+
+
+ @/usr/include/machine/_types.h
+
+35 #iâdeà
+_MACHINE__TYPES_H_
+
+
+36
+ #_MACHINE__TYPES_H_
+
+
+ )
+
+48
+ #_ALIGNBYTES
+ ((è- 1)
+
+ )
+
+49
+ #_STACKALIGNBYTES
+ 15
+
+ )
+
+50
+ #_ALIGN
+(
+p
+è((()Õè+
+_ALIGNBYTES
+è&~_ALIGNBYTES)
+
+ )
+
+51
+ #_ALIGNED_POINTER
+(
+p
+,
+t
+è1
+
+ )
+
+52
+ #_MAX_PAGE_SHIFT
+ 12
+
+ )
+
+54 #ià
+defšed
+(
+_KERNEL
+)
+
+55
+ sÏb–_t
+ {
+
+56
+ mv®
+[8];
+
+57 }
+ tÏb–_t
+;
+
+61 sigÃd
+ t__št8_t
+;
+
+62
+ t__ušt8_t
+;
+
+63
+ t__št16_t
+;
+
+64
+ t__ušt16_t
+;
+
+65
+ t__št32_t
+;
+
+66
+ t__ušt32_t
+;
+
+67
+ t__št64_t
+;
+
+68
+ t__ušt64_t
+;
+
+71
+__št8_t
+
+ t__št_Ëa¡8_t
+;
+
+72
+__ušt8_t
+
+ t__ušt_Ëa¡8_t
+;
+
+73
+__št16_t
+
+ t__št_Ëa¡16_t
+;
+
+74
+__ušt16_t
+
+ t__ušt_Ëa¡16_t
+;
+
+75
+__št32_t
+
+ t__št_Ëa¡32_t
+;
+
+76
+__ušt32_t
+
+ t__ušt_Ëa¡32_t
+;
+
+77
+__št64_t
+
+ t__št_Ëa¡64_t
+;
+
+78
+__ušt64_t
+
+ t__ušt_Ëa¡64_t
+;
+
+81
+__št32_t
+
+ t__št_ç¡8_t
+;
+
+82
+__ušt32_t
+
+ t__ušt_ç¡8_t
+;
+
+83
+__št32_t
+
+ t__št_ç¡16_t
+;
+
+84
+__ušt32_t
+
+ t__ušt_ç¡16_t
+;
+
+85
+__št32_t
+
+ t__št_ç¡32_t
+;
+
+86
+__ušt32_t
+
+ t__ušt_ç¡32_t
+;
+
+87
+__št64_t
+
+ t__št_ç¡64_t
+;
+
+88
+__ušt64_t
+
+ t__ušt_ç¡64_t
+;
+
+89
+ #__INT_FAST8_MIN
+
+INT32_MIN
+
+
+ )
+
+90
+ #__INT_FAST16_MIN
+
+INT32_MIN
+
+
+ )
+
+91
+ #__INT_FAST32_MIN
+
+INT32_MIN
+
+
+ )
+
+92
+ #__INT_FAST64_MIN
+
+INT64_MIN
+
+
+ )
+
+93
+ #__INT_FAST8_MAX
+
+INT32_MAX
+
+
+ )
+
+94
+ #__INT_FAST16_MAX
+
+INT32_MAX
+
+
+ )
+
+95
+ #__INT_FAST32_MAX
+
+INT32_MAX
+
+
+ )
+
+96
+ #__INT_FAST64_MAX
+
+INT64_MAX
+
+
+ )
+
+97
+ #__UINT_FAST8_MAX
+
+UINT32_MAX
+
+
+ )
+
+98
+ #__UINT_FAST16_MAX
+
+UINT32_MAX
+
+
+ )
+
+99
+ #__UINT_FAST32_MAX
+
+UINT32_MAX
+
+
+ )
+
+100
+ #__UINT_FAST64_MAX
+
+UINT64_MAX
+
+
+ )
+
+103
+ t__š�Œ_t
+;
+
+104
+ t__uš�Œ_t
+;
+
+107
+__št64_t
+
+ t__štmax_t
+;
+
+108
+__ušt64_t
+
+ t__uštmax_t
+;
+
+111
+ t__»gi¡”_t
+;
+
+114
+ t__vaddr_t
+;
+
+115
+ t__·ddr_t
+;
+
+116
+ t__vsize_t
+;
+
+117
+ t__psize_t
+;
+
+120
+ t__doubË_t
+;
+
+121
+ t__æßt_t
+;
+
+122
+ t__±rdiff_t
+;
+
+123
+ t__size_t
+;
+
+124
+ t__ssize_t
+;
+
+125 #ià
+defšed
+(
+__GNUC__
+) && __GNUC__ >= 3
+
+126
+__bužtš_va_li¡
+
+ t__va_li¡
+;
+
+128 *
+ t__va_li¡
+;
+
+132 #iâdeà
+__ýlu¥lus
+
+
+133
+ t__wch¬_t
+;
+
+135
+ t__wšt_t
+;
+
+136
+ t__ruÃ_t
+;
+
+137 *
+ t__wù¿ns_t
+;
+
+138 *
+ t__wùy³_t
+;
+
+ @/usr/include/sys/_null.h
+
+8 #iâdeà
+NULL
+
+
+9 #ià!
+defšed
+(
+__ýlu¥lus
+)
+
+10
+ #NULL
+ ((*)0)
+
+ )
+
+11 #–ià
+__ýlu¥lus
+ >= 201103L
+
+12
+ #NULL
+
+nuαr
+
+
+ )
+
+13 #–ià
+defšed
+(
+__GNUG__
+)
+
+14
+ #NULL
+
+__nuÎ
+
+
+ )
+
+16
+ #NULL
+ 0L
+
+ )
+
+ @/usr/include/sys/_time.h
+
+32 #iâdeà
+_SYS__TIME_H_
+
+
+33
+ #_SYS__TIME_H_
+
+
+ )
+
+36
+ #CLOCKS_PER_SEC
+ 100
+
+ )
+
+38 #ià
+__BSD_VISIBLE
+
+
+43
+ #__CLOCK_ENCODE
+(
+ty³
+,
+id
+è(Ñy³è| ((idè<< 12))
+
+ )
+
+44
+ #__CLOCK_TYPE
+(
+c
+è((cè& 0xfff)
+
+ )
+
+45
+ #__CLOCK_PTID
+(
+c
+è(((cè>> 12è& 0xfffff)
+
+ )
+
+48 #ià
+__POSIX_VISIBLE
+ >ð199309 ||
+__ISO_C_VISIBLE
+ >= 2011
+
+49 #iâdeà
+_TIME_T_DEFINED_
+
+
+50
+ #_TIME_T_DEFINED_
+
+
+ )
+
+51
+__time_t
+
+ ttime_t
+;
+
+54 #iâdeà
+_TIMESPEC_DECLARED
+
+
+55
+ #_TIMESPEC_DECLARED
+
+
+ )
+
+56
+ stime¥ec
+ {
+
+57
+time_t
+
+ mtv_£c
+;
+
+58
+ mtv_n£c
+;
+
+63 #ià
+__POSIX_VISIBLE
+ >= 199309
+
+64
+ #CLOCK_REALTIME
+ 0
+
+ )
+
+65
+ #CLOCK_PROCESS_CPUTIME_ID
+ 2
+
+ )
+
+66
+ #CLOCK_MONOTONIC
+ 3
+
+ )
+
+67
+ #CLOCK_THREAD_CPUTIME_ID
+ 4
+
+ )
+
+68
+ #CLOCK_UPTIME
+ 5
+
+ )
+
+69
+ #CLOCK_BOOTTIME
+ 6
+
+ )
+
+75
+ s™im”¥ec
+ {
+
+76
+time¥ec
+
+ m™_š‹rv®
+;
+
+77
+time¥ec
+
+ m™_v®ue
+;
+
+80
+ #TIMER_RELTIME
+ 0x0
+
+ )
+
+81
+ #TIMER_ABSTIME
+ 0x1
+
+ )
+
+ @/usr/include/sys/_types.h
+
+34 #iâdeà
+_SYS__TYPES_H_
+
+
+35
+ #_SYS__TYPES_H_
+
+
+ )
+
+37
+ ~<machše/_ty³s.h
+>
+
+39
+__št64_t
+
+ t__blkút_t
+;
+
+40
+__št32_t
+
+ t__blksize_t
+;
+
+41
+__št64_t
+
+ t__þock_t
+;
+
+42
+__št32_t
+
+ t__þockid_t
+;
+
+43
+ t__ýuid_t
+;
+
+44
+__št32_t
+
+ t__dev_t
+;
+
+45
+__ušt32_t
+
+ t__fix±_t
+;
+
+46
+__ušt64_t
+
+ t__fsblkút_t
+;
+
+47
+__ušt64_t
+
+ t__fsfžút_t
+;
+
+48
+__ušt32_t
+
+ t__gid_t
+;
+
+49
+__ušt32_t
+
+ t__id_t
+;
+
+50
+__ušt32_t
+
+ t__š_addr_t
+;
+
+51
+__ušt16_t
+
+ t__š_pÜt_t
+;
+
+52
+__ušt64_t
+
+ t__šo_t
+;
+
+53
+ t__key_t
+;
+
+54
+__ušt32_t
+
+ t__mode_t
+;
+
+55
+__ušt32_t
+
+ t__Æšk_t
+;
+
+56
+__št64_t
+
+ t__off_t
+;
+
+57
+__št32_t
+
+ t__pid_t
+;
+
+58
+__ušt64_t
+
+ t__¾im_t
+;
+
+59
+__ušt8_t
+
+ t__§_çmžy_t
+;
+
+60
+__št32_t
+
+ t__£gsz_t
+;
+
+61
+__ušt32_t
+
+ t__sockËn_t
+;
+
+62
+ t__su£cÚds_t
+;
+
+63
+__št64_t
+
+ t__time_t
+;
+
+64
+__št32_t
+
+ t__tim”_t
+;
+
+65
+__ušt32_t
+
+ t__uid_t
+;
+
+66
+__ušt32_t
+
+ t__u£cÚds_t
+;
+
+73
+ m__mb¡©e8
+[128];
+
+74
+__št64_t
+
+ m__mb¡©eL
+;
+
+75 }
+ t__mb¡©e_t
+;
+
+ @/usr/include/sys/cdefs.h
+
+38 #iâdef
+_SYS_CDEFS_H_
+
+
+39
+ #_SYS_CDEFS_H_
+
+
+ )
+
+41
+ ~<machše/cdefs.h
+>
+
+46 #ifdeà
+__GNUC__
+
+
+47
+ #__GNUC_PREREQ__
+(
+ma
+,
+mi
+) \
+
+48 ((
+__GNUC__
+ > (
+ma
+)è|| (__GNUC__ =ð(maè&&
+__GNUC_MINOR__
+ >ð(
+mi
+)))
+
+ )
+
+50
+ #__GNUC_PREREQ__
+(
+ma
+,
+mi
+è0
+
+ )
+
+61 #ià
+defšed
+(
+__STDC__
+è|| defšed(
+__ýlu¥lus
+)
+
+62
+ #__P
+(
+´Ùos
+è´Ùo
+
+ )
+
+63
+ #__CONCAT
+(
+x
+,
+y
+èx ##
+ )
+y
+
+64
+ #__STRING
+(
+x
+è#x
+
+ )
+
+66
+ #__cÚ¡
+ cÚ¡
+
+ )
+
+67
+ #__sigÃd
+ sigÃd
+
+ )
+
+68
+ #__vÞ©že
+ vÞ©že
+
+ )
+
+69 #ià
+defšed
+(
+__ýlu¥lus
+è|| defšed(
+__PCC__
+)
+
+70
+ #__šlše
+
+šlše
+
+
+ )
+
+72 #ià!
+defšed
+(
+__GNUC__
+)
+
+73
+ #__šlše
+
+
+ )
+
+78
+ #__P
+(
+´Ùos
+è(è
+
+ )
+
+79
+ #__CONCAT
+(
+x
+,
+y
+èx
+ )
+y
+
+80
+ #__STRING
+(
+x
+è"x"
+
+ )
+
+82 #ià!
+defšed
+(
+__GNUC__
+)
+
+83
+ #__cÚ¡
+
+
+ )
+
+84
+ #__šlše
+
+
+ )
+
+85
+ #__sigÃd
+
+
+ )
+
+86
+ #__vÞ©že
+
+
+ )
+
+99 #ià!
+__GNUC_PREREQ__
+(2, 5è&& !
+defšed
+(
+__PCC__
+)
+
+100
+ #__©Œibu‹__
+(
+x
+è
+
+ )
+
+101 #ià
+defšed
+(
+__GNUC__
+è&& !defšed(
+__STRICT_ANSI__
+)
+
+102
+ #__d—d
+
+__vÞ©že
+
+
+ )
+
+103
+ #__pu»
+
+__cÚ¡
+
+
+ )
+
+106
+ #__d—d
+
+ `__©Œibu‹__
+((
+__nÜ‘uº__
+))
+
+ )
+
+107
+ #__pu»
+
+ `__©Œibu‹__
+((
+__cÚ¡__
+))
+
+ )
+
+110 #ià
+__GNUC_PREREQ__
+(2, 7)
+
+111
+ #__unu£d
+
+ `__©Œibu‹__
+((
+__unu£d__
+))
+
+ )
+
+113
+ #__unu£d
+
+
+ )
+
+116 #ià
+__GNUC_PREREQ__
+(3, 1)
+
+117
+ #__u£d
+
+ `__©Œibu‹__
+((
+__u£d__
+))
+
+ )
+
+119
+ #__u£d
+
+__unu£d
+
+
+ )
+
+122 #ià
+__GNUC_PREREQ__
+(3,4)
+
+123
+ #__w¬n_unu£d_»suÉ
+
+ `__©Œibu‹__
+((
+__w¬n_unu£d_»suÉ__
+))
+
+ )
+
+125
+ #__w¬n_unu£d_»suÉ
+
+
+ )
+
+128 #ià
+__GNUC_PREREQ__
+(3,3è&& !
+defšed
+(
+__þªg__
+)
+
+129
+ #__bounded
+(
+¬gs
+è
+ `__©Œibu‹__
+ ((
+__bounded__
+‡rg ))
+
+ )
+
+131
+ #__bounded
+(
+¬gs
+è
+
+ )
+
+140 #ià
+__GNUC_PREREQ__
+(4, 1)
+
+141
+ #__»tuºs_twiû
+
+ `__©Œibu‹__
+((
+»tuºs_twiû
+))
+
+ )
+
+143
+ #__»tuºs_twiû
+
+
+ )
+
+153 #ifdeà
+__GNUC__
+
+
+154 #ià
+__GNUC_PREREQ__
+(4, 2)
+
+155
+ #__Úly_šlše
+
+__šlše
+
+ `__©Œibu‹__
+((
+__gnu_šlše__
+))
+
+ )
+
+157
+ #__Úly_šlše
+
+__šlše
+
+
+ )
+
+160
+ #__Úly_šlše
+
+__šlše
+
+
+ )
+
+191 #ià
+__GNUC_PREREQ__
+(2, 96)
+
+192
+ #__´ediù_Œue
+(
+exp
+è
+ `__bužtš_ex³ù
+((Óxpè!ð0), 1)
+
+ )
+
+193
+ #__´ediù_çl£
+(
+exp
+è
+ `__bužtš_ex³ù
+((Óxpè!ð0), 0)
+
+ )
+
+195
+ #__´ediù_Œue
+(
+exp
+è(Óxpè!ð0)
+
+ )
+
+196
+ #__´ediù_çl£
+(
+exp
+è(Óxpè!ð0)
+
+ )
+
+200 #iâdeà
+__d—d
+
+
+201
+ #__d—d
+
+
+ )
+
+202
+ #__pu»
+
+
+ )
+
+217 #ià
+__GNUC_PREREQ__
+(2, 7è||
+defšed
+(
+__PCC__
+)
+
+218
+ #__·cked
+
+ `__©Œibu‹__
+((
+__·cked__
+))
+
+ )
+
+219
+ #__®igÃd
+(
+x
+è
+ `__©Œibu‹__
+((
+ `__®igÃd__
+(x)))
+
+ )
+
+222 #ià!
+__GNUC_PREREQ__
+(2, 8)
+
+223
+ #__ex‹nsiÚ__
+
+
+ )
+
+226 #ià
+__GNUC_PREREQ__
+(3, 0)
+
+227
+ #__m®loc
+
+ `__©Œibu‹__
+((
+__m®loc__
+))
+
+ )
+
+229
+ #__m®loc
+
+
+ )
+
+232 #ià
+defšed
+(
+__ýlu¥lus
+)
+
+233
+ #__BEGIN_EXTERN_C
+ "C" {
+
+ )
+
+234
+ #__END_EXTERN_C
+ }
+
+ )
+
+236
+ #__BEGIN_EXTERN_C
+
+
+ )
+
+237
+ #__END_EXTERN_C
+
+
+ )
+
+240 #ià
+__GNUC_PREREQ__
+(4, 0)
+
+241
+ #__dso_public
+
+ `__©Œibu‹__
+((
+ `__visibž™y__
+("deçuÉ")))
+
+ )
+
+242
+ #__dso_hidd’
+
+ `__©Œibu‹__
+((
+ `__visibž™y__
+("hidd’")))
+
+ )
+
+243
+ #__BEGIN_PUBLIC_DECLS
+ \
+
+244
+ `_P¿gma
+("GCC visibž™y…ush(deçuÉ)"è
+__BEGIN_EXTERN_C
+
+
+ )
+
+245
+ #__END_PUBLIC_DECLS
+
+__END_EXTERN_C
+
+ `_P¿gma
+("GCC visibž™y…Ý")
+
+ )
+
+246
+ #__BEGIN_HIDDEN_DECLS
+ \
+
+247
+ `_P¿gma
+("GCC visibž™y…ush(hidd’)"è
+__BEGIN_EXTERN_C
+
+
+ )
+
+248
+ #__END_HIDDEN_DECLS
+
+__END_EXTERN_C
+
+ `_P¿gma
+("GCC visibž™y…Ý")
+
+ )
+
+250
+ #__dso_public
+
+
+ )
+
+251
+ #__dso_hidd’
+
+
+ )
+
+252
+ #__BEGIN_PUBLIC_DECLS
+
+__BEGIN_EXTERN_C
+
+
+ )
+
+253
+ #__END_PUBLIC_DECLS
+
+__END_EXTERN_C
+
+
+ )
+
+254
+ #__BEGIN_HIDDEN_DECLS
+
+__BEGIN_EXTERN_C
+
+
+ )
+
+255
+ #__END_HIDDEN_DECLS
+
+__END_EXTERN_C
+
+
+ )
+
+258
+ #__BEGIN_DECLS
+
+__BEGIN_EXTERN_C
+
+
+ )
+
+259
+ #__END_DECLS
+
+__END_EXTERN_C
+
+
+ )
+
+294 #ifdeà
+_XOPEN_SOURCE
+
+
+295 #ià(
+_XOPEN_SOURCE
+ - 0 >= 800)
+
+296
+ #__XPG_VISIBLE
+ 800
+
+ )
+
+297 #undeà
+_POSIX_C_SOURCE
+
+
+298
+ #_POSIX_C_SOURCE
+ 202405L
+
+ )
+
+299 #–ià(
+_XOPEN_SOURCE
+ - 0 >= 700)
+
+300
+ #__XPG_VISIBLE
+ 700
+
+ )
+
+301 #undeà
+_POSIX_C_SOURCE
+
+
+302
+ #_POSIX_C_SOURCE
+ 200809L
+
+ )
+
+303 #–ià(
+_XOPEN_SOURCE
+ - 0 >= 600)
+
+304
+ #__XPG_VISIBLE
+ 600
+
+ )
+
+305 #undeà
+_POSIX_C_SOURCE
+
+
+306
+ #_POSIX_C_SOURCE
+ 200112L
+
+ )
+
+307 #–ià(
+_XOPEN_SOURCE
+ - 0 >= 520)
+
+308
+ #__XPG_VISIBLE
+ 520
+
+ )
+
+309 #undeà
+_POSIX_C_SOURCE
+
+
+310
+ #_POSIX_C_SOURCE
+ 199506L
+
+ )
+
+311 #–ià(
+_XOPEN_SOURCE
+ - 0 >= 500)
+
+312
+ #__XPG_VISIBLE
+ 500
+
+ )
+
+313 #undeà
+_POSIX_C_SOURCE
+
+
+314
+ #_POSIX_C_SOURCE
+ 199506L
+
+ )
+
+315 #–ià(
+_XOPEN_SOURCE_EXTENDED
+ - 0 == 1)
+
+316
+ #__XPG_VISIBLE
+ 420
+
+ )
+
+317 #–ià(
+_XOPEN_VERSION
+ - 0 >= 4)
+
+318
+ #__XPG_VISIBLE
+ 400
+
+ )
+
+320
+ #__XPG_VISIBLE
+ 300
+
+ )
+
+340 #ifdeà
+_POSIX_C_SOURCE
+
+
+341 #ià(
+_POSIX_C_SOURCE
+ - 0 >= 202405)
+
+342
+ #__POSIX_VISIBLE
+ 202405
+
+ )
+
+343
+ #__ISO_C_VISIBLE
+ 2017
+
+ )
+
+344 #–ià(
+_POSIX_C_SOURCE
+ - 0 >= 200809)
+
+345
+ #__POSIX_VISIBLE
+ 200809
+
+ )
+
+346
+ #__ISO_C_VISIBLE
+ 1999
+
+ )
+
+347 #–ià(
+_POSIX_C_SOURCE
+ - 0 >= 200112)
+
+348
+ #__POSIX_VISIBLE
+ 200112
+
+ )
+
+349
+ #__ISO_C_VISIBLE
+ 1999
+
+ )
+
+350 #–ià(
+_POSIX_C_SOURCE
+ - 0 >= 199506)
+
+351
+ #__POSIX_VISIBLE
+ 199506
+
+ )
+
+352
+ #__ISO_C_VISIBLE
+ 1990
+
+ )
+
+353 #–ià(
+_POSIX_C_SOURCE
+ - 0 >= 199309)
+
+354
+ #__POSIX_VISIBLE
+ 199309
+
+ )
+
+355
+ #__ISO_C_VISIBLE
+ 1990
+
+ )
+
+356 #–ià(
+_POSIX_C_SOURCE
+ - 0 >= 2)
+
+357
+ #__POSIX_VISIBLE
+ 199209
+
+ )
+
+358
+ #__ISO_C_VISIBLE
+ 1990
+
+ )
+
+360
+ #__POSIX_VISIBLE
+ 199009
+
+ )
+
+361
+ #__ISO_C_VISIBLE
+ 1990
+
+ )
+
+363 #–ià
+defšed
+(
+_POSIX_SOURCE
+)
+
+364
+ #__POSIX_VISIBLE
+ 198808
+
+ )
+
+365
+ #__ISO_C_VISIBLE
+ 0
+
+ )
+
+373 #ià
+defšed
+(
+_ANSI_SOURCE
+è&& !defšed(
+__POSIX_VISIBLE
+) && \
+
+374 !
+ $defšed
+(
+__XPG_VISIBLE
+)
+
+375
+ #__POSIX_VISIBLE
+ 0
+
+ )
+
+376
+ #__XPG_VISIBLE
+ 0
+
+ )
+
+377
+ #__ISO_C_VISIBLE
+ 1990
+
+ )
+
+384 #ià
+ `defšed
+(
+_ISOC11_SOURCE
+) || \
+
+385 (
+ `defšed
+(
+__STDC_VERSION__
+) && __STDC_VERSION__ >= 201112) || \
+
+386 (
+ `defšed
+(
+__ýlu¥lus
+) && __cplusplus >= 201703)
+
+387 #undeà
+__ISO_C_VISIBLE
+
+
+388
+ #__ISO_C_VISIBLE
+ 2011
+
+ )
+
+389 #–ià
+ `defšed
+(
+_ISOC99_SOURCE
+) || \
+
+390 (
+ `defšed
+(
+__STDC_VERSION__
+) && __STDC_VERSION__ >= 199901) || \
+
+391 (
+ `defšed
+(
+__ýlu¥lus
+) && __cplusplus >= 201103)
+
+392 #undeà
+__ISO_C_VISIBLE
+
+
+393
+ #__ISO_C_VISIBLE
+ 1999
+
+ )
+
+401 #ià!
+ `defšed
+(
+_BSD_SOURCE
+) && \
+
+402 (
+ `defšed
+(
+_ANSI_SOURCE
+è|| defšed(
+__XPG_VISIBLE
+è||
+ $defšed
+(
+__POSIX_VISIBLE
+))
+
+403
+ #__BSD_VISIBLE
+ 0
+
+ )
+
+409 #iâdeà
+__XPG_VISIBLE
+
+
+410
+ #__XPG_VISIBLE
+ 800
+
+ )
+
+412 #iâdeà
+__POSIX_VISIBLE
+
+
+413
+ #__POSIX_VISIBLE
+ 202405
+
+ )
+
+415 #iâdeà
+__ISO_C_VISIBLE
+
+
+416
+ #__ISO_C_VISIBLE
+ 2017
+
+ )
+
+418 #iâdeà
+__BSD_VISIBLE
+
+
+419
+ #__BSD_VISIBLE
+ 1
+
+ )
+
+ @/usr/include/sys/errno.h
+
+40
+ ~<sys/cdefs.h
+>
+
+42
+ #EPERM
+ 1
+
+ )
+
+43
+ #ENOENT
+ 2
+
+ )
+
+44
+ #ESRCH
+ 3
+
+ )
+
+45
+ #EINTR
+ 4
+
+ )
+
+46
+ #EIO
+ 5
+
+ )
+
+47
+ #ENXIO
+ 6
+
+ )
+
+48
+ #E2BIG
+ 7
+
+ )
+
+49
+ #ENOEXEC
+ 8
+
+ )
+
+50
+ #EBADF
+ 9
+
+ )
+
+51
+ #ECHILD
+ 10
+
+ )
+
+52
+ #EDEADLK
+ 11
+
+ )
+
+54
+ #ENOMEM
+ 12
+
+ )
+
+55
+ #EACCES
+ 13
+
+ )
+
+56
+ #EFAULT
+ 14
+
+ )
+
+57 #ià
+__BSD_VISIBLE
+
+
+58
+ #ENOTBLK
+ 15
+
+ )
+
+60
+ #EBUSY
+ 16
+
+ )
+
+61
+ #EEXIST
+ 17
+
+ )
+
+62
+ #EXDEV
+ 18
+
+ )
+
+63
+ #ENODEV
+ 19
+
+ )
+
+64
+ #ENOTDIR
+ 20
+
+ )
+
+65
+ #EISDIR
+ 21
+
+ )
+
+66
+ #EINVAL
+ 22
+
+ )
+
+67
+ #ENFILE
+ 23
+
+ )
+
+68
+ #EMFILE
+ 24
+
+ )
+
+69
+ #ENOTTY
+ 25
+
+ )
+
+70
+ #ETXTBSY
+ 26
+
+ )
+
+71
+ #EFBIG
+ 27
+
+ )
+
+72
+ #ENOSPC
+ 28
+
+ )
+
+73
+ #ESPIPE
+ 29
+
+ )
+
+74
+ #EROFS
+ 30
+
+ )
+
+75
+ #EMLINK
+ 31
+
+ )
+
+76
+ #EPIPE
+ 32
+
+ )
+
+79
+ #EDOM
+ 33
+
+ )
+
+80
+ #ERANGE
+ 34
+
+ )
+
+83
+ #EAGAIN
+ 35
+
+ )
+
+84
+ #EWOULDBLOCK
+
+EAGAIN
+
+
+ )
+
+85
+ #EINPROGRESS
+ 36
+
+ )
+
+86
+ #EALREADY
+ 37
+
+ )
+
+89
+ #ENOTSOCK
+ 38
+
+ )
+
+90
+ #EDESTADDRREQ
+ 39
+
+ )
+
+91
+ #EMSGSIZE
+ 40
+
+ )
+
+92
+ #EPROTOTYPE
+ 41
+
+ )
+
+93
+ #ENOPROTOOPT
+ 42
+
+ )
+
+94
+ #EPROTONOSUPPORT
+ 43
+
+ )
+
+95 #ià
+__BSD_VISIBLE
+
+
+96
+ #ESOCKTNOSUPPORT
+ 44
+
+ )
+
+98
+ #EOPNOTSUPP
+ 45
+
+ )
+
+99 #ià
+__BSD_VISIBLE
+
+
+100
+ #EPFNOSUPPORT
+ 46
+
+ )
+
+102
+ #EAFNOSUPPORT
+ 47
+
+ )
+
+103
+ #EADDRINUSE
+ 48
+
+ )
+
+104
+ #EADDRNOTAVAIL
+ 49
+
+ )
+
+107
+ #ENETDOWN
+ 50
+
+ )
+
+108
+ #ENETUNREACH
+ 51
+
+ )
+
+109
+ #ENETRESET
+ 52
+
+ )
+
+110
+ #ECONNABORTED
+ 53
+
+ )
+
+111
+ #ECONNRESET
+ 54
+
+ )
+
+112
+ #ENOBUFS
+ 55
+
+ )
+
+113
+ #EISCONN
+ 56
+
+ )
+
+114
+ #ENOTCONN
+ 57
+
+ )
+
+115 #ià
+__BSD_VISIBLE
+
+
+116
+ #ESHUTDOWN
+ 58
+
+ )
+
+117
+ #ETOOMANYREFS
+ 59
+
+ )
+
+119
+ #ETIMEDOUT
+ 60
+
+ )
+
+120
+ #ECONNREFUSED
+ 61
+
+ )
+
+122
+ #ELOOP
+ 62
+
+ )
+
+123
+ #ENAMETOOLONG
+ 63
+
+ )
+
+126 #ià
+__BSD_VISIBLE
+
+
+127
+ #EHOSTDOWN
+ 64
+
+ )
+
+129
+ #EHOSTUNREACH
+ 65
+
+ )
+
+130
+ #ENOTEMPTY
+ 66
+
+ )
+
+133 #ià
+__BSD_VISIBLE
+
+
+134
+ #EPROCLIM
+ 67
+
+ )
+
+135
+ #EUSERS
+ 68
+
+ )
+
+137
+ #EDQUOT
+ 69
+
+ )
+
+140
+ #ESTALE
+ 70
+
+ )
+
+141 #ià
+__BSD_VISIBLE
+
+
+142
+ #EREMOTE
+ 71
+
+ )
+
+143
+ #EBADRPC
+ 72
+
+ )
+
+144
+ #ERPCMISMATCH
+ 73
+
+ )
+
+145
+ #EPROGUNAVAIL
+ 74
+
+ )
+
+146
+ #EPROGMISMATCH
+ 75
+
+ )
+
+147
+ #EPROCUNAVAIL
+ 76
+
+ )
+
+150
+ #ENOLCK
+ 77
+
+ )
+
+151
+ #ENOSYS
+ 78
+
+ )
+
+153 #ià
+__BSD_VISIBLE
+
+
+154
+ #EFTYPE
+ 79
+
+ )
+
+155
+ #EAUTH
+ 80
+
+ )
+
+156
+ #ENEEDAUTH
+ 81
+
+ )
+
+157
+ #EIPSEC
+ 82
+
+ )
+
+158
+ #ENOATTR
+ 83
+
+ )
+
+160
+ #EILSEQ
+ 84
+
+ )
+
+161 #ià
+__BSD_VISIBLE
+
+
+162
+ #ENOMEDIUM
+ 85
+
+ )
+
+163
+ #EMEDIUMTYPE
+ 86
+
+ )
+
+165
+ #EOVERFLOW
+ 87
+
+ )
+
+166
+ #ECANCELED
+ 88
+
+ )
+
+167
+ #EIDRM
+ 89
+
+ )
+
+168
+ #ENOMSG
+ 90
+
+ )
+
+169
+ #ENOTSUP
+ 91
+
+ )
+
+170
+ #EBADMSG
+ 92
+
+ )
+
+171
+ #ENOTRECOVERABLE
+ 93
+
+ )
+
+172
+ #EOWNERDEAD
+ 94
+
+ )
+
+173
+ #EPROTO
+ 95
+
+ )
+
+174 #ià
+__BSD_VISIBLE
+
+
+175
+ #ELAST
+ 95
+
+ )
+
+178 #ifdeà
+_KERNEL
+
+
+180
+ #ERESTART
+ -1
+
+ )
+
+181
+ #EJUSTRETURN
+ -2
+
+ )
+
+ @/usr/include/sys/limits.h
+
+26 #iâdeà
+_SYS_LIMITS_H_
+
+
+27
+ #_SYS_LIMITS_H_
+
+
+ )
+
+29
+ ~<sys/cdefs.h
+>
+
+34
+ ~<machše/lim™s.h
+>
+
+36
+ #CHAR_BIT
+ 8
+
+ )
+
+38
+ #SCHAR_MAX
+ 0x7à
+
+ )
+
+39
+ #SCHAR_MIN
+ (-0x7f-1è
+
+ )
+
+41
+ #UCHAR_MAX
+ 0xfà
+
+ )
+
+42 #ifdeà
+__CHAR_UNSIGNED__
+
+
+43
+ #CHAR_MIN
+ 0
+
+ )
+
+44
+ #CHAR_MAX
+ 0xfà
+
+ )
+
+46
+ #CHAR_MAX
+ 0x7f
+
+ )
+
+47
+ #CHAR_MIN
+ (-0x7f-1)
+
+ )
+
+50
+ #MB_LEN_MAX
+ 4
+
+ )
+
+52
+ #USHRT_MAX
+ 0xfffà
+
+ )
+
+53
+ #SHRT_MAX
+ 0x7ffà
+
+ )
+
+54
+ #SHRT_MIN
+ (-0x7fff-1è
+
+ )
+
+56
+ #UINT_MAX
+ 0xffffffffU
+
+ )
+
+57
+ #INT_MAX
+ 0x7ffffffà
+
+ )
+
+58
+ #INT_MIN
+ (-0x7fffffff-1è
+
+ )
+
+60 #ifdeà
+__LP64__
+
+
+61
+ #ULONG_MAX
+ 0xffffffffffffffffUL
+
+ )
+
+63
+ #LONG_MAX
+ 0x7fffffffffffffffL
+
+ )
+
+65
+ #LONG_MIN
+ (-0x7fffffffffffffffL-1)
+
+ )
+
+68
+ #ULONG_MAX
+ 0xffffffffUL
+
+ )
+
+69
+ #LONG_MAX
+ 0x7fffffffL
+
+ )
+
+70
+ #LONG_MIN
+ (-0x7fffffffL-1)
+
+ )
+
+73 #ià
+__BSD_VISIBLE
+ ||
+__ISO_C_VISIBLE
+ >= 1999
+
+74
+ #ULLONG_MAX
+ 0xffffffffffffffffULL
+
+ )
+
+76
+ #LLONG_MAX
+ 0x7fffffffffffffffLL
+
+ )
+
+78
+ #LLONG_MIN
+ (-0x7fffffffffffffffLL-1)
+
+ )
+
+82 #ià
+__BSD_VISIBLE
+
+
+83
+ #UID_MAX
+
+UINT_MAX
+
+
+ )
+
+84
+ #GID_MAX
+
+UINT_MAX
+
+
+ )
+
+87 #ià
+__XPG_VISIBLE
+ ||
+__POSIX_VISIBLE
+ >= 200809
+
+88 #ifdeà
+__LP64__
+
+
+89
+ #LONG_BIT
+ 64
+
+ )
+
+91
+ #LONG_BIT
+ 32
+
+ )
+
+93
+ #WORD_BIT
+ 32
+
+ )
+
+96 #ià
+__XPG_VISIBLE
+ < 600
+
+97
+ ~<machše/_æßt.h
+>
+
+100 #iâdeà
+FLT_DIG
+
+
+101
+ #FLT_DIG
+
+__FLT_DIG
+
+
+ )
+
+103 #iâdeà
+FLT_MAX
+
+
+104
+ #FLT_MAX
+
+__FLT_MAX
+
+
+ )
+
+106 #iâdeà
+DBL_DIG
+
+
+107
+ #DBL_DIG
+
+__DBL_DIG
+
+
+ )
+
+109 #iâdeà
+DBL_MAX
+
+
+110
+ #DBL_MAX
+
+__DBL_MAX
+
+
+ )
+
+114 #ià
+__XPG_VISIBLE
+ < 500
+
+115 #iâdeà
+FLT_MIN
+
+
+116
+ #FLT_MIN
+
+__FLT_MIN
+
+
+ )
+
+118 #iâdeà
+DBL_MIN
+
+
+119
+ #DBL_MIN
+
+__DBL_MIN
+
+
+ )
+
+ @/usr/include/sys/types.h
+
+40 #iâdeà
+_SYS_TYPES_H_
+
+
+41
+ #_SYS_TYPES_H_
+
+
+ )
+
+43
+ ~<sys/cdefs.h
+>
+
+44 #ià
+__BSD_VISIBLE
+
+
+45
+ ~<sys/’dŸn.h
+>
+
+47
+ ~<sys/_’dŸn.h
+>
+
+50 #ià
+__BSD_VISIBLE
+
+
+51
+ tu_ch¬
+;
+
+52
+ tu_shÜt
+;
+
+53
+ tu_št
+;
+
+54
+ tu_lÚg
+;
+
+56
+ tunch¬
+;
+
+57
+ tushÜt
+;
+
+58
+ tušt
+;
+
+59
+ tulÚg
+;
+
+61
+__ýuid_t
+
+ týuid_t
+;
+
+62
+__»gi¡”_t
+
+ t»gi¡”_t
+;
+
+69 #iâdef
+__BIT_TYPES_DEFINED__
+
+
+70
+ #__BIT_TYPES_DEFINED__
+
+
+ )
+
+73 #iâdef
+_INT8_T_DEFINED_
+
+
+74
+ #_INT8_T_DEFINED_
+
+
+ )
+
+75
+__št8_t
+
+ tšt8_t
+;
+
+78 #iâdef
+_UINT8_T_DEFINED_
+
+
+79
+ #_UINT8_T_DEFINED_
+
+
+ )
+
+80
+__ušt8_t
+
+ tušt8_t
+;
+
+83 #iâdef
+_INT16_T_DEFINED_
+
+
+84
+ #_INT16_T_DEFINED_
+
+
+ )
+
+85
+__št16_t
+
+ tšt16_t
+;
+
+88 #iâdef
+_UINT16_T_DEFINED_
+
+
+89
+ #_UINT16_T_DEFINED_
+
+
+ )
+
+90
+__ušt16_t
+
+ tušt16_t
+;
+
+93 #iâdef
+_INT32_T_DEFINED_
+
+
+94
+ #_INT32_T_DEFINED_
+
+
+ )
+
+95
+__št32_t
+
+ tšt32_t
+;
+
+98 #iâdef
+_UINT32_T_DEFINED_
+
+
+99
+ #_UINT32_T_DEFINED_
+
+
+ )
+
+100
+__ušt32_t
+
+ tušt32_t
+;
+
+103 #iâdef
+_INT64_T_DEFINED_
+
+
+104
+ #_INT64_T_DEFINED_
+
+
+ )
+
+105
+__št64_t
+
+ tšt64_t
+;
+
+108 #iâdef
+_UINT64_T_DEFINED_
+
+
+109
+ #_UINT64_T_DEFINED_
+
+
+ )
+
+110
+__ušt64_t
+
+ tušt64_t
+;
+
+114
+__ušt8_t
+
+ tu_št8_t
+;
+
+115
+__ušt16_t
+
+ tu_št16_t
+;
+
+116
+__ušt32_t
+
+ tu_št32_t
+;
+
+117
+__ušt64_t
+
+ tu_št64_t
+;
+
+120
+__št64_t
+
+ tquad_t
+;
+
+121
+__ušt64_t
+
+ tu_quad_t
+;
+
+123 #ià
+__BSD_VISIBLE
+
+
+125
+__vaddr_t
+
+ tvaddr_t
+;
+
+126
+__·ddr_t
+
+ t·ddr_t
+;
+
+127
+__vsize_t
+
+ tvsize_t
+;
+
+128
+__psize_t
+
+ tpsize_t
+;
+
+132
+__blkút_t
+
+ tblkút_t
+;
+
+133
+__blksize_t
+
+ tblksize_t
+;
+
+134 *
+ tÿddr_t
+;
+
+135
+__št32_t
+
+ tdaddr32_t
+;
+
+136
+__št64_t
+
+ tdaddr_t
+;
+
+137
+__dev_t
+
+ tdev_t
+;
+
+138
+__fix±_t
+
+ tfix±_t
+;
+
+139
+__gid_t
+
+ tgid_t
+;
+
+140
+__id_t
+
+ tid_t
+;
+
+141
+__šo_t
+
+ tšo_t
+;
+
+142
+__key_t
+
+ tkey_t
+;
+
+143
+__mode_t
+
+ tmode_t
+;
+
+144
+__Æšk_t
+
+ tÆšk_t
+;
+
+145
+__¾im_t
+
+ t¾im_t
+;
+
+146
+__£gsz_t
+
+ t£gsz_t
+;
+
+147
+__uid_t
+
+ tuid_t
+;
+
+148
+__u£cÚds_t
+
+ tu£cÚds_t
+;
+
+149
+__su£cÚds_t
+
+ tsu£cÚds_t
+;
+
+150
+__fsblkút_t
+
+ tfsblkút_t
+;
+
+151
+__fsfžút_t
+
+ tfsfžút_t
+;
+
+156 #iâdef
+_CLOCK_T_DEFINED_
+
+
+157
+ #_CLOCK_T_DEFINED_
+
+
+ )
+
+158
+__þock_t
+
+ tþock_t
+;
+
+161 #iâdef
+_CLOCKID_T_DEFINED_
+
+
+162
+ #_CLOCKID_T_DEFINED_
+
+
+ )
+
+163
+__þockid_t
+
+ tþockid_t
+;
+
+166 #iâdef
+_PID_T_DEFINED_
+
+
+167
+ #_PID_T_DEFINED_
+
+
+ )
+
+168
+__pid_t
+
+ tpid_t
+;
+
+171 #iâdef
+_SIZE_T_DEFINED_
+
+
+172
+ #_SIZE_T_DEFINED_
+
+
+ )
+
+173
+__size_t
+
+ tsize_t
+;
+
+176 #iâdef
+_SSIZE_T_DEFINED_
+
+
+177
+ #_SSIZE_T_DEFINED_
+
+
+ )
+
+178
+__ssize_t
+
+ tssize_t
+;
+
+181 #iâdef
+_TIME_T_DEFINED_
+
+
+182
+ #_TIME_T_DEFINED_
+
+
+ )
+
+183
+__time_t
+
+ ttime_t
+;
+
+186 #iâdef
+_TIMER_T_DEFINED_
+
+
+187
+ #_TIMER_T_DEFINED_
+
+
+ )
+
+188
+__tim”_t
+
+ ttim”_t
+;
+
+191 #iâdef
+_OFF_T_DEFINED_
+
+
+192
+ #_OFF_T_DEFINED_
+
+
+ )
+
+193
+__off_t
+
+ toff_t
+;
+
+201 #ià
+__BSD_VISIBLE
+ && !
+defšed
+(
+_KERNEL
+)
+
+202
+__BEGIN_DECLS
+
+
+203
+off_t
+
+l£ek
+(, off_t, );
+
+204
+árunÿ‹
+(,
+off_t
+);
+
+205
+Œunÿ‹
+(cÚ¡ *,
+off_t
+);
+
+206
+ g__END_DECLS
+
+
+209 #ià
+__BSD_VISIBLE
+
+
+211
+ #majÜ
+(
+x
+è((()(xè>> 8è& 0xff)
+
+ )
+
+212
+ #mšÜ
+(
+x
+è(()((xè& 0xffè| (((xè& 0xffff0000è>> 8))
+
+ )
+
+213
+ #makedev
+(
+x
+,
+y
+è((
+dev_t
+)((((xè& 0xffè<< 8è| ((yè& 0xffè| (((yè& 0xffff00è<< 8)))
+
+ )
+
+216 #ià
+defšed
+(
+__STDC__
+è&& defšed(
+_KERNEL
+)
+
+222
+ g´oc
+;
+
+223
+ gpg½
+;
+
+224
+ guüed
+;
+
+225
+ gru§ge
+;
+
+226
+ gfže
+;
+
+227
+ gbuf
+;
+
+228
+ g‰y
+;
+
+229
+ guio
+;
+
+232 #ifdeà
+_KERNEL
+
+
+233 #ià
+defšed
+(
+__GNUC__
+) || \
+
+234 (
+defšed
+(
+__STDC_VERSION__
+è&&
+ g__STDC_VERSION__
+ >= 199901)
+
+236
+ #çl£
+ 0
+
+ )
+
+237
+ #Œue
+ 1
+
+ )
+
+242
+çl£
+ = 0,
+
+243
+ mŒue
+ = 1
+
+244 }
+ t_BoÞ
+;
+
+247
+ #çl£
+
+çl£
+
+
+ )
+
+248
+ #Œue
+
+Œue
+
+
+ )
+
+253
+ #boÞ
+
+_BoÞ
+
+
+ )
+
+256
+ #__boÞ_Œue_çl£_¬e_defšed
+ 1
+
+ )
+
+ @/usr/include/sys/unistd.h
+
+35 #iâdeà
+_SYS_UNISTD_H_
+
+
+36
+ #_SYS_UNISTD_H_
+
+
+ )
+
+38
+ ~<sys/cdefs.h
+>
+
+40
+ #_POSIX_VDISABLE
+ (0377)
+
+ )
+
+41
+ #_POSIX_ASYNC_IO
+ (-1)
+
+ )
+
+42
+ #_POSIX_PRIO_IO
+ (-1)
+
+ )
+
+43
+ #_POSIX_SYNC_IO
+ (-1)
+
+ )
+
+46
+ #_POSIX_VERSION
+ 200809L
+
+ )
+
+49
+ #F_OK
+ 0
+
+ )
+
+50
+ #X_OK
+ 0x01
+
+ )
+
+51
+ #W_OK
+ 0x02
+
+ )
+
+52
+ #R_OK
+ 0x04
+
+ )
+
+55
+ #SEEK_SET
+ 0
+
+ )
+
+56
+ #SEEK_CUR
+ 1
+
+ )
+
+57
+ #SEEK_END
+ 2
+
+ )
+
+59 #ià
+__BSD_VISIBLE
+
+
+61
+ #L_SET
+
+SEEK_SET
+
+
+ )
+
+62
+ #L_INCR
+
+SEEK_CUR
+
+
+ )
+
+63
+ #L_XTND
+
+SEEK_END
+
+
+ )
+
+66
+ s__tfÜk
+ {
+
+67 *
+ mtf_tcb
+;
+
+68
+pid_t
+ *
+ mtf_tid
+;
+
+69 *
+ mtf_¡ack
+;
+
+73
+ s__kbšd
+ {
+
+74 *
+ mkb_addr
+;
+
+75
+size_t
+
+ mkb_size
+;
+
+77
+ #KBIND_BLOCK_MAX
+ 2
+
+ )
+
+78
+ #KBIND_DATA_MAX
+ 24
+
+ )
+
+84
+ #_PC_LINK_MAX
+ 1
+
+ )
+
+85
+ #_PC_MAX_CANON
+ 2
+
+ )
+
+86
+ #_PC_MAX_INPUT
+ 3
+
+ )
+
+87
+ #_PC_NAME_MAX
+ 4
+
+ )
+
+88
+ #_PC_PATH_MAX
+ 5
+
+ )
+
+89
+ #_PC_PIPE_BUF
+ 6
+
+ )
+
+90
+ #_PC_CHOWN_RESTRICTED
+ 7
+
+ )
+
+91
+ #_PC_NO_TRUNC
+ 8
+
+ )
+
+92
+ #_PC_VDISABLE
+ 9
+
+ )
+
+93
+ #_PC_2_SYMLINKS
+ 10
+
+ )
+
+94
+ #_PC_ALLOC_SIZE_MIN
+ 11
+
+ )
+
+95
+ #_PC_ASYNC_IO
+ 12
+
+ )
+
+96
+ #_PC_FILESIZEBITS
+ 13
+
+ )
+
+97
+ #_PC_PRIO_IO
+ 14
+
+ )
+
+98
+ #_PC_REC_INCR_XFER_SIZE
+ 15
+
+ )
+
+99
+ #_PC_REC_MAX_XFER_SIZE
+ 16
+
+ )
+
+100
+ #_PC_REC_MIN_XFER_SIZE
+ 17
+
+ )
+
+101
+ #_PC_REC_XFER_ALIGN
+ 18
+
+ )
+
+102
+ #_PC_SYMLINK_MAX
+ 19
+
+ )
+
+103
+ #_PC_SYNC_IO
+ 20
+
+ )
+
+104
+ #_PC_TIMESTAMP_RESOLUTION
+ 21
+
+ )
+
+ @/usr/include/machine/_float.h
+
+32 #iâdeà
+_MACHINE__FLOAT_H_
+
+
+33
+ #_MACHINE__FLOAT_H_
+
+
+ )
+
+35
+ #__FLT_RADIX
+ 2
+
+ )
+
+36
+ #__FLT_ROUNDS
+
+ `__æt_rounds
+()
+
+ )
+
+37
+ #__FLT_EVAL_METHOD
+ 0
+
+ )
+
+39
+ #__FLT_MANT_DIG
+ 24
+
+ )
+
+40
+ #__FLT_EPSILON
+ 1.19209290E-07F
+
+ )
+
+41
+ #__FLT_DIG
+ 6
+
+ )
+
+42
+ #__FLT_MIN_EXP
+ (-125è
+
+ )
+
+43
+ #__FLT_MIN
+ 1.17549435E-38F
+
+ )
+
+44
+ #__FLT_MIN_10_EXP
+ (-37è
+
+ )
+
+45
+ #__FLT_MAX_EXP
+ 128
+
+ )
+
+46
+ #__FLT_MAX
+ 3.40282347E+38F
+
+ )
+
+47
+ #__FLT_MAX_10_EXP
+ 38
+
+ )
+
+49
+ #__DBL_MANT_DIG
+ 53
+
+ )
+
+50
+ #__DBL_EPSILON
+ 2.2204460492503131E-16
+
+ )
+
+51
+ #__DBL_DIG
+ 15
+
+ )
+
+52
+ #__DBL_MIN_EXP
+ (-1021)
+
+ )
+
+53
+ #__DBL_MIN
+ 2.2250738585072014E-308
+
+ )
+
+54
+ #__DBL_MIN_10_EXP
+ (-307)
+
+ )
+
+55
+ #__DBL_MAX_EXP
+ 1024
+
+ )
+
+56
+ #__DBL_MAX
+ 1.7976931348623157E+308
+
+ )
+
+57
+ #__DBL_MAX_10_EXP
+ 308
+
+ )
+
+59
+ #__LDBL_MANT_DIG
+ 64
+
+ )
+
+60
+ #__LDBL_EPSILON
+ 1.08420217248550443401e-19L
+
+ )
+
+61
+ #__LDBL_DIG
+ 18
+
+ )
+
+62
+ #__LDBL_MIN_EXP
+ (-16381)
+
+ )
+
+63
+ #__LDBL_MIN
+ 3.36210314311209350626e-4932L
+
+ )
+
+64
+ #__LDBL_MIN_10_EXP
+ (-4931)
+
+ )
+
+65
+ #__LDBL_MAX_EXP
+ 16384
+
+ )
+
+66
+ #__LDBL_MAX
+ 1.18973149535723176502e+4932L
+
+ )
+
+67
+ #__LDBL_MAX_10_EXP
+ 4932
+
+ )
+
+69
+ #__DECIMAL_DIG
+ 21
+
+ )
+
+ @/usr/include/machine/cdefs.h
+
+8 #iâdef
+_MACHINE_CDEFS_H_
+
+
+9
+ #_MACHINE_CDEFS_H_
+
+
+ )
+
+11
+ #__¡rÚg_®Ÿs
+(
+®Ÿs
+,
+sym
+) \
+
+12
+ `__asm__
+(".glob® "
+ `__STRING
+(
+®Ÿs
+) " ; " __STRING(alias) \
+
+13 " = "
+ `__STRING
+(
+sym
+))
+
+ )
+
+14
+ #__w—k_®Ÿs
+(
+®Ÿs
+,
+sym
+) \
+
+15
+ `__asm__
+(".w—k "
+ `__STRING
+(
+®Ÿs
+) " ; " __STRING(alias) \
+
+16 " = "
+ `__STRING
+(
+sym
+))
+
+ )
+
+17
+ #__w¬n_»ã»nûs
+(
+sym
+,
+msg
+) \
+
+18
+ `__asm__
+(".£ùiÚ .gnu.w¬nšg."
+ `__STRING
+(
+sym
+) \
+
+19 " ; .asci˜\""
+msg
+ "\" ; .‹xt")
+
+ )
+
+ @/usr/include/machine/limits.h
+
+34 #iâdef
+_MACHINE_LIMITS_H_
+
+
+35
+ #_MACHINE_LIMITS_H_
+
+
+ )
+
+37
+ ~<sys/cdefs.h
+>
+
+39 #ià
+__POSIX_VISIBLE
+ ||
+__XPG_VISIBLE
+
+
+40
+ #SSIZE_MAX
+
+LONG_MAX
+
+
+ )
+
+43 #ià
+__BSD_VISIBLE
+
+
+44
+ #SIZE_T_MAX
+
+ULONG_MAX
+
+
+ )
+
+46
+ #UQUAD_MAX
+ 0xffffffffffffffffULL
+
+ )
+
+47
+ #QUAD_MAX
+ 0x7fffffffffffffffLL
+
+ )
+
+48
+ #QUAD_MIN
+ (-0x7fffffffffffffffLL-1è
+
+ )
+
+ @/usr/include/sys/_endian.h
+
+33 #iâdeà
+_SYS__ENDIAN_H_
+
+
+34
+ #_SYS__ENDIAN_H_
+
+
+ )
+
+36
+ ~<sys/_ty³s.h
+>
+
+38
+ #__FROM_SYS__ENDIAN
+
+
+ )
+
+39
+ ~<machše/’dŸn.h
+>
+
+40 #undeà
+__FROM_SYS__ENDIAN
+
+
+42
+ #_LITTLE_ENDIAN
+ 1234
+
+ )
+
+43
+ #_BIG_ENDIAN
+ 4321
+
+ )
+
+44
+ #_PDP_ENDIAN
+ 3412
+
+ )
+
+48
+ #__sw16g’
+(
+x
+) \
+
+49 (
+__ušt16_t
+)(((__ušt16_t)(
+x
+è& 0xffUè<< 8 | ((__ušt16_t)(xè& 0xff00Uè>> 8)
+
+ )
+
+51
+ #__sw32g’
+(
+x
+) \
+
+52 (
+__ušt32_t
+)(((__ušt32_t)(
+x
+) & 0xff) << 24 | \
+
+53 ((
+__ušt32_t
+)(
+x
+) & 0xff00) << 8 | ((__uint32_t)(x) & 0xff0000) >> 8 |\
+
+54 ((
+__ušt32_t
+)(
+x
+è& 0xff000000è>> 24)
+
+ )
+
+56
+ #__sw64g’
+(
+x
+) \
+
+57 (
+__ušt64_t
+)((((__ušt64_t)(
+x
+) & 0xff) << 56) | \
+
+58 ((
+__ušt64_t
+)(
+x
+) & 0xff00ULL) << 40 | \
+
+59 ((
+__ušt64_t
+)(
+x
+) & 0xff0000ULL) << 24 | \
+
+60 ((
+__ušt64_t
+)(
+x
+) & 0xff000000ULL) << 8 | \
+
+61 ((
+__ušt64_t
+)(
+x
+) & 0xff00000000ULL) >> 8 | \
+
+62 ((
+__ušt64_t
+)(
+x
+) & 0xff0000000000ULL) >> 24 | \
+
+63 ((
+__ušt64_t
+)(
+x
+) & 0xff000000000000ULL) >> 40 | \
+
+64 ((
+__ušt64_t
+)(
+x
+è& 0xff00000000000000ULLè>> 56)
+
+ )
+
+66 #iâdeà
+__HAVE_MD_SWAP
+
+
+67
+__šlše
+
+__ušt16_t
+
+
+68
+ $__sw16md
+(
+__ušt16_t
+
+x
+)
+
+70 (
+ `__sw16g’
+(
+x
+));
+
+71
+ }
+}
+
+73
+__šlše
+
+__ušt32_t
+
+
+74
+ $__sw32md
+(
+__ušt32_t
+
+x
+)
+
+76 (
+ `__sw32g’
+(
+x
+));
+
+77
+ }
+}
+
+79
+__šlše
+
+__ušt64_t
+
+
+80
+ $__sw64md
+(
+__ušt64_t
+
+x
+)
+
+82 (
+ `__sw64g’
+(
+x
+));
+
+83
+ }
+}
+
+86
+ #__sw16
+(
+x
+) \
+
+87 (
+__ušt16_t
+)(
+ `__bužtš_cÚ¡ªt_p
+(
+x
+è?
+ `__sw16g’
+(xè:
+ `__sw16md
+(x))
+
+ )
+
+88
+ #__sw32
+(
+x
+) \
+
+89 (
+__ušt32_t
+)(
+ `__bužtš_cÚ¡ªt_p
+(
+x
+è?
+ `__sw32g’
+(xè:
+ `__sw32md
+(x))
+
+ )
+
+90
+ #__sw64
+(
+x
+) \
+
+91 (
+__ušt64_t
+)(
+ `__bužtš_cÚ¡ªt_p
+(
+x
+è?
+ `__sw64g’
+(xè:
+ `__sw64md
+(x))
+
+ )
+
+93 #ià
+_BYTE_ORDER
+ =ð
+_LITTLE_ENDIAN
+
+
+95
+ #_QUAD_HIGHWORD
+ 1
+
+ )
+
+96
+ #_QUAD_LOWWORD
+ 0
+
+ )
+
+98
+ #__htobe16
+
+__sw16
+
+
+ )
+
+99
+ #__htobe32
+
+__sw32
+
+
+ )
+
+100
+ #__htobe64
+
+__sw64
+
+
+ )
+
+101
+ #__htÞe16
+(
+x
+è((
+__ušt16_t
+)(x))
+
+ )
+
+102
+ #__htÞe32
+(
+x
+è((
+__ušt32_t
+)(x))
+
+ )
+
+103
+ #__htÞe64
+(
+x
+è((
+__ušt64_t
+)(x))
+
+ )
+
+105 #ifdeà
+_KERNEL
+
+
+106 #ifdeà
+__HAVE_MD_SWAPIO
+
+
+108
+ #__bemtoh16
+(
+_x
+è
+ `__msw16
+(_x)
+
+ )
+
+109
+ #__bemtoh32
+(
+_x
+è
+ `__msw32
+(_x)
+
+ )
+
+110
+ #__bemtoh64
+(
+_x
+è
+ `__msw64
+(_x)
+
+ )
+
+112
+ #__htobem16
+(
+_x
+,
+_v
+è
+ `__swm16
+((_x), (_v))
+
+ )
+
+113
+ #__htobem32
+(
+_x
+,
+_v
+è
+ `__swm32
+((_x), (_v))
+
+ )
+
+114
+ #__htobem64
+(
+_x
+,
+_v
+è
+ `__swm64
+((_x), (_v))
+
+ )
+
+120 #ià
+_BYTE_ORDER
+ =ð
+_BIG_ENDIAN
+
+
+122
+ #_QUAD_HIGHWORD
+ 0
+
+ )
+
+123
+ #_QUAD_LOWWORD
+ 1
+
+ )
+
+125
+ #__htobe16
+(
+x
+è((
+__ušt16_t
+)(x))
+
+ )
+
+126
+ #__htobe32
+(
+x
+è((
+__ušt32_t
+)(x))
+
+ )
+
+127
+ #__htobe64
+(
+x
+è((
+__ušt64_t
+)(x))
+
+ )
+
+128
+ #__htÞe16
+
+__sw16
+
+
+ )
+
+129
+ #__htÞe32
+
+__sw32
+
+
+ )
+
+130
+ #__htÞe64
+
+__sw64
+
+
+ )
+
+132 #ifdeà
+_KERNEL
+
+
+133 #ifdeà
+__HAVE_MD_SWAPIO
+
+
+135
+ #__Ëmtoh16
+(
+_x
+è
+ `__msw16
+(_x)
+
+ )
+
+136
+ #__Ëmtoh32
+(
+_x
+è
+ `__msw32
+(_x)
+
+ )
+
+137
+ #__Ëmtoh64
+(
+_x
+è
+ `__msw64
+(_x)
+
+ )
+
+139
+ #__htÞem16
+(
+_x
+,
+_v
+è
+ `__swm16
+((_x), (_v))
+
+ )
+
+140
+ #__htÞem32
+(
+_x
+,
+_v
+è
+ `__swm32
+((_x), (_v))
+
+ )
+
+141
+ #__htÞem64
+(
+_x
+,
+_v
+è
+ `__swm64
+((_x), (_v))
+
+ )
+
+148 #ifdeà
+_KERNEL
+
+
+154 #iâdeà
+__bemtoh16
+
+
+155
+ #__bemtoh16
+(
+_x
+è
+ `__htobe16
+(*(
+__ušt16_t
+ *)(_x))
+
+ )
+
+156
+ #__bemtoh32
+(
+_x
+è
+ `__htobe32
+(*(
+__ušt32_t
+ *)(_x))
+
+ )
+
+157
+ #__bemtoh64
+(
+_x
+è
+ `__htobe64
+(*(
+__ušt64_t
+ *)(_x))
+
+ )
+
+160 #iâdeà
+__htobem16
+
+
+161
+ #__htobem16
+(
+_x
+,
+_v
+è(*(
+__ušt16_t
+ *)(_xèð
+ `__htobe16
+(_v))
+
+ )
+
+162
+ #__htobem32
+(
+_x
+,
+_v
+è(*(
+__ušt32_t
+ *)(_xèð
+ `__htobe32
+(_v))
+
+ )
+
+163
+ #__htobem64
+(
+_x
+,
+_v
+è(*(
+__ušt64_t
+ *)(_xèð
+ `__htobe64
+(_v))
+
+ )
+
+166 #iâdeà
+__Ëmtoh16
+
+
+167
+ #__Ëmtoh16
+(
+_x
+è
+ `__htÞe16
+(*(
+__ušt16_t
+ *)(_x))
+
+ )
+
+168
+ #__Ëmtoh32
+(
+_x
+è
+ `__htÞe32
+(*(
+__ušt32_t
+ *)(_x))
+
+ )
+
+169
+ #__Ëmtoh64
+(
+_x
+è
+ `__htÞe64
+(*(
+__ušt64_t
+ *)(_x))
+
+ )
+
+172 #iâdeà
+__htÞem16
+
+
+173
+ #__htÞem16
+(
+_x
+,
+_v
+è(*(
+__ušt16_t
+ *)(_xèð
+ `__htÞe16
+(_v))
+
+ )
+
+174
+ #__htÞem32
+(
+_x
+,
+_v
+è(*(
+__ušt32_t
+ *)(_xèð
+ `__htÞe32
+(_v))
+
+ )
+
+175
+ #__htÞem64
+(
+_x
+,
+_v
+è(*(
+__ušt64_t
+ *)(_xèð
+ `__htÞe64
+(_v))
+
+ )
+
+ @/usr/include/sys/endian.h
+
+37 #iâdeà
+_SYS_ENDIAN_H_
+
+
+38
+ #_SYS_ENDIAN_H_
+
+
+ )
+
+40
+ ~<sys/cdefs.h
+>
+
+41
+ ~<sys/_’dŸn.h
+>
+
+44
+ #LITTLE_ENDIAN
+
+_LITTLE_ENDIAN
+
+
+ )
+
+45
+ #BIG_ENDIAN
+
+_BIG_ENDIAN
+
+
+ )
+
+46
+ #PDP_ENDIAN
+
+_PDP_ENDIAN
+
+
+ )
+
+47
+ #BYTE_ORDER
+
+_BYTE_ORDER
+
+
+ )
+
+53
+ #htobe16
+(
+x
+è
+ `__htobe16
+(x)
+
+ )
+
+54
+ #htobe32
+(
+x
+è
+ `__htobe32
+(x)
+
+ )
+
+55
+ #htobe64
+(
+x
+è
+ `__htobe64
+(x)
+
+ )
+
+56
+ #htÞe16
+(
+x
+è
+ `__htÞe16
+(x)
+
+ )
+
+57
+ #htÞe32
+(
+x
+è
+ `__htÞe32
+(x)
+
+ )
+
+58
+ #htÞe64
+(
+x
+è
+ `__htÞe64
+(x)
+
+ )
+
+61
+ #be16toh
+(
+x
+è
+ `__htobe16
+(x)
+
+ )
+
+62
+ #be32toh
+(
+x
+è
+ `__htobe32
+(x)
+
+ )
+
+63
+ #be64toh
+(
+x
+è
+ `__htobe64
+(x)
+
+ )
+
+64
+ #Ë16toh
+(
+x
+è
+ `__htÞe16
+(x)
+
+ )
+
+65
+ #Ë32toh
+(
+x
+è
+ `__htÞe32
+(x)
+
+ )
+
+66
+ #Ë64toh
+(
+x
+è
+ `__htÞe64
+(x)
+
+ )
+
+69 #ià
+__BSD_VISIBLE
+
+
+70
+ #sw16
+(
+x
+è
+ `__sw16
+(x)
+
+ )
+
+71
+ #sw32
+(
+x
+è
+ `__sw32
+(x)
+
+ )
+
+72
+ #sw64
+(
+x
+è
+ `__sw64
+(x)
+
+ )
+
+74
+ #sw16_muÉi
+(
+v
+,
+n
+) do { \
+
+75
+__size_t
+
+__sw16_muÉi_n
+ = (
+n
+); \
+
+76
+__ušt16_t
+ *
+__sw16_muÉi_v
+ = (
+v
+); \
+
+78
+__sw16_muÉi_n
+) { \
+
+79 *
+__sw16_muÉi_v
+ =
+ `sw16
+(*__swap16_multi_v); \
+
+80
+__sw16_muÉi_v
+++; \
+
+81
+__sw16_muÉi_n
+--; \
+
+83 } 0)
+
+ )
+
+86
+ #b‘oh16
+(
+x
+è
+ `__htobe16
+(x)
+
+ )
+
+87
+ #b‘oh32
+(
+x
+è
+ `__htobe32
+(x)
+
+ )
+
+88
+ #b‘oh64
+(
+x
+è
+ `__htobe64
+(x)
+
+ )
+
+89
+ #Ëtoh16
+(
+x
+è
+ `__htÞe16
+(x)
+
+ )
+
+90
+ #Ëtoh32
+(
+x
+è
+ `__htÞe32
+(x)
+
+ )
+
+91
+ #Ëtoh64
+(
+x
+è
+ `__htÞe64
+(x)
+
+ )
+
+93 #iâdeà
+htÚs
+
+
+95
+ #htÚs
+(
+x
+è
+ `__htobe16
+(x)
+
+ )
+
+96
+ #htÚl
+(
+x
+è
+ `__htobe32
+(x)
+
+ )
+
+97
+ #Áohs
+(
+x
+è
+ `__htobe16
+(x)
+
+ )
+
+98
+ #Áohl
+(
+x
+è
+ `__htobe32
+(x)
+
+ )
+
+102
+ #NTOHL
+(
+x
+è(xèð
+ `Áohl
+((
+u_št32_t
+)(x))
+
+ )
+
+103
+ #NTOHS
+(
+x
+è(xèð
+ `Áohs
+((
+u_št16_t
+)(x))
+
+ )
+
+104
+ #HTONL
+(
+x
+è(xèð
+ `htÚl
+((
+u_št32_t
+)(x))
+
+ )
+
+105
+ #HTONS
+(
+x
+è(xèð
+ `htÚs
+((
+u_št16_t
+)(x))
+
+ )
+
+108 #ifdeà
+_KERNEL
+
+
+110
+ #bemtoh16
+
+__bemtoh16
+
+
+ )
+
+111
+ #bemtoh32
+
+__bemtoh32
+
+
+ )
+
+112
+ #bemtoh64
+
+__bemtoh64
+
+
+ )
+
+113
+ #htobem16
+
+__htobem16
+
+
+ )
+
+114
+ #htobem32
+
+__htobem32
+
+
+ )
+
+115
+ #htobem64
+
+__htobem64
+
+
+ )
+
+116
+ #Ëmtoh16
+
+__Ëmtoh16
+
+
+ )
+
+117
+ #Ëmtoh32
+
+__Ëmtoh32
+
+
+ )
+
+118
+ #Ëmtoh64
+
+__Ëmtoh64
+
+
+ )
+
+119
+ #htÞem16
+
+__htÞem16
+
+
+ )
+
+120
+ #htÞem32
+
+__htÞem32
+
+
+ )
+
+121
+ #htÞem64
+
+__htÞem64
+
+
+ )
+
+ @/usr/include/machine/endian.h
+
+27 #iâdeà
+_MACHINE_ENDIAN_H_
+
+
+28
+ #_MACHINE_ENDIAN_H_
+
+
+ )
+
+30
+ #_BYTE_ORDER
+
+_LITTLE_ENDIAN
+
+
+ )
+
+32 #iâdeà
+__FROM_SYS__ENDIAN
+
+
+33
+ ~<sys/’dŸn.h
+>
+
+ @
+1
+.
+1
+/usr/include
+25
+594
+linije.c
+version.h
+/usr/include/assert.h
+/usr/include/errno.h
+/usr/include/math.h
+/usr/include/stdarg.h
+/usr/include/stdio.h
+/usr/include/stdlib.h
+/usr/include/time.h
+/usr/include/unistd.h
+/usr/include/machine/_types.h
+/usr/include/sys/_null.h
+/usr/include/sys/_time.h
+/usr/include/sys/_types.h
+/usr/include/sys/cdefs.h
+/usr/include/sys/errno.h
+/usr/include/sys/limits.h
+/usr/include/sys/types.h
+/usr/include/sys/unistd.h
+/usr/include/machine/_float.h
+/usr/include/machine/cdefs.h
+/usr/include/machine/limits.h
+/usr/include/sys/_endian.h
+/usr/include/sys/endian.h
+/usr/include/machine/endian.h
diff --git a/date b/date
@@ -0,0 +1 @@
+July 30, 2025
diff --git a/description b/description
@@ -0,0 +1 @@
+Клон игре Color lines
diff --git a/lib/makedate b/lib/makedate
@@ -0,0 +1,61 @@
+#!/bin/sh -x
+# vim: set ft=bash:
+FALLBACKDATE=${FALLBACKDATE:-unknown}
+LC_ALL=C
+export LC_ALL
+
+if [ -d .got ] && command -v got >/dev/null 2>&1; then
+ got log |
+ awk '
+ /^date: / {
+ sub(/^date: /,"",$0)
+ # Convert to proper form for `mandoc -Tlint`
+ month_names["Jan"] = "January"
+ month_names["Feb"] = "February"
+ month_names["Mar"] = "March"
+ month_names["Apr"] = "April"
+ month_names["May"] = "May"
+ month_names["Jun"] = "June"
+ month_names["Jul"] = "July"
+ month_names["Aug"] = "August"
+ month_names["Sep"] = "September"
+ month_names["Oct"] = "October"
+ month_names["Nov"] = "November"
+ month_names["Dec"] = "December"
+ print month_names[$2] " " $3 ", " $5
+ exit
+ }' >date.new
+elif [ -d .git ] && command -v git >/dev/null 2>&1; then
+ user=$(getent passwd "$(unalias ls >/dev/null 2>&1 || true; \
+ command ls -lnd . | awk '{print $3}')" | awk -F: '{print $1}')
+ if [ -z "$user" ]; then
+ printf "$0: error: Cannot determine owner of %s" "$(pwd)" >&2
+ exit 1
+ fi
+ e_user=$(id -un)
+ if [ "$e_user" = "$user" ]; then
+ git log --format=format:%cd \
+ --date=format:"%B %d, %Y" -1 @ >date.new
+ else
+ su "${user}" -c 'env LC_ALL=C git log --format=format:%cd \
+ --date=format:"%B %d, %Y" -1 @' >date.new
+ fi
+ echo >>date.new
+else
+ printf "%s\n" "$FALLBACKDATE" >date.new
+fi
+
+if [ -f date ]; then
+ if diff date date.new >/dev/null; then
+ rm date.new
+ else
+ mv date.new date
+ touch .rebuild
+ fi
+else
+ mv date.new date
+ touch .rebuild
+fi
+if [ "$1" = "-l" ]; then
+ printf "DATE=\"%s\"\n" "$(cat date)"
+fi
diff --git a/lib/makeversion b/lib/makeversion
@@ -0,0 +1,66 @@
+#!/bin/sh -x
+# vim: set ft=bash:
+FALLBACKVER=${FALLBACKVER:-unknown}
+
+if [ -d .got ] && command -v got >/dev/null 2>&1; then
+ lastcommit=$(got log |
+ awk '/^commit/ {print substr($2,1,7); exit}')
+ got tag -l |
+ awk -v lastcommit="$lastcommit" '
+ /^object: commit/ {
+ if (!lasttagcom)
+ {
+ lasttagcom = substr($3,1,7)
+ }
+ next
+ }
+ /^tag/ {
+ if (!ver)
+ {
+ sub(/^v/,"",$2)
+ ver = $2
+ }
+ next
+ }
+ END {
+ printf "%s", ver
+ if (lastcommit != lasttagcom)
+ {
+ printf "-g%s", lastcommit
+ }
+ printf "\n"
+ }' >version.new
+elif [ -d .git ] && command -v git >/dev/null 2>&1; then
+ LC_ALL=C
+ export LC_ALL
+ user=$(getent passwd "$(unalias ls >/dev/null 2>&1 || true; \
+ command ls -lnd . | awk '{print $3}')" | awk -F: '{print $1}')
+ if [ -z "$user" ]; then
+ printf "$0: error: Cannot determine owner of %s" "$(pwd)" >&2
+ exit 1
+ fi
+ e_user=$(id -un)
+ if [ "$e_user" = "$user" ]; then
+ git describe 2>/dev/null | sed 's/^v//' >version.new
+ else
+ su "$user" -c 'git describe' 2>/dev/null |
+ sed 's/^v//' >version.new
+ fi
+else
+ printf "%s\n" "$FALLBACKVER" >version.new
+fi
+
+if [ -f version ]; then
+ if diff version version.new >/dev/null; then
+ rm version.new
+ else
+ mv version.new version
+ touch .rebuild
+ fi
+else
+ mv version.new version
+ touch .rebuild
+fi
+if [ "$1" = "-l" ]; then
+ printf "VERSION=\"%s\"\n" "$(cat version)"
+fi
diff --git a/lib/mkpack b/lib/mkpack
@@ -0,0 +1,20 @@
+#!/bin/sh -x
+# vim: set ft=bash:
+DISTDIR=$(grep '^PROG[[:space:]]\{1,\}=' config.mk |
+ sed -E 's,.*=[[:space:]]+([[:alpha:]]+),\1,')-$(cat version)
+mkdir "$DISTDIR"
+if [ -d .got ] && command -v got >/dev/null 2>&1; then
+ files=$(got tree | sed -e 's,[@/*$]$,,g')
+elif [ -d .git ] && command -v git >/dev/null 2>&1; then
+ files=$(git ls-files)
+else
+ printf "Either got or git are required for 'make pack'\n" >&2
+ exit 1
+fi
+for f in $files; do
+ d="$DISTDIR"/"$(dirname "$f")"
+ mkdir -p "$d"
+ cp "$f" "$d"/
+done
+tar -cf - "$DISTDIR" | xz -9v - > "$DISTDIR".tar.xz
+rm -fr "$DISTDIR"
diff --git a/lib/replacepat b/lib/replacepat
@@ -0,0 +1,10 @@
+#!/bin/sh
+# vim: set ft=bash:
+infile="$1"
+outfile="$2"
+DATE=$(cat date 2>/dev/null)
+VERSION=$(cat version 2>/dev/null)
+
+sed -e 's|%VERSION%|'"$VERSION"'|g' -e 's|%DATE%|'"$DATE"'|g' \
+ -e 's|%DATADIR%|'"$DATADIR"'|g' "$infile" \
+ > "$outfile"
diff --git a/linije.c b/linije.c
@@ -0,0 +1,1569 @@
+/* This program is licensed under the terms of GNU GPL v3 or (at your option)
+ * any later version. Copyright (C) 2025 Страхиња Радић.
+ * See the file LICENSE for exact copyright and license details. */
+
+#include <SDL3/SDL.h>
+#include <SDL3_image/SDL_image.h>
+#include <assert.h>
+#include <errno.h>
+#include <math.h>
+#include <stdarg.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <time.h>
+#include <unistd.h>
+
+#include "local.h"
+#include "version.h"
+
+/* clang-format off */
+#define ANIM_SPEED 100 /* how long does it take for the animation to go
+ * from start to finish (ms) */
+/* clang-format on */
+#define FPS 60
+#define ANIM_STEPS (ANIM_SPEED * FPS / 1000)
+
+#define BUFSIZE 4096
+#define CELL_SIZE 20
+#define DEFAULT_WIDTH 1280
+#define DEFAULT_HEIGHT 720
+#define HELP_DIALOG_WIDTH 900
+#define HELP_DIALOG_HEIGHT 450
+#define GRID_WIDTH 15
+#define GRID_HEIGHT 15
+#define LOCATION_STACK_MAX (GRID_WIDTH * GRID_HEIGHT)
+#define MIN_POP_LEN 5
+/* clang-format off */
+#define POP_STRING_CELL_VALUE 100 /* Multiplied by # of balls in a string and
+ * added to score when popping a string */
+/* clang-format on */
+#define PRINT_BUFSIZE 4096
+#define PROGNAME "linije"
+#define TER12_WIDTH 6
+#define TER12_HEIGHT 12
+#define WIN_TITLE "Linije"
+
+#define MIN(a, b) (((a) < (b)) ? (a) : (b))
+#define MAX(a, b) (((a) > (b)) ? (a) : (b))
+#define INDEX(x, y) ((y) * GRID_WIDTH + (x))
+#define INDEXFI(x, y) (((int)floor(y)) * GRID_WIDTH + ((int)floor(x)))
+#define VALNAME(n) [n] = #n
+
+/* clang-format off */
+enum {
+ CELL_EMPTY,
+ CELL_RED,
+ CELL_BLUE,
+ CELL_GREEN,
+ CELL_PURPLE,
+ CELL_ORANGE,
+ CELL_SELECTED
+};
+
+enum {
+ STATE_IDLE,
+ STATE_SELECTION,
+ STATE_MOVING,
+ STATE_FAILURE,
+ STATE_SUCCESS
+};
+
+const char* cell_names[] = {
+ VALNAME(CELL_EMPTY),
+ VALNAME(CELL_RED),
+ VALNAME(CELL_BLUE),
+ VALNAME(CELL_GREEN),
+ VALNAME(CELL_PURPLE),
+ VALNAME(CELL_ORANGE),
+ VALNAME(CELL_SELECTED),
+};
+
+const int check_five_deltas[][4] = {
+ { -1, -1, 1, 1 },
+ { 1, -1, -1, 1 },
+ { 0, -1, 0, 1 },
+ { -1, 0, 1, 0 },
+};
+
+const char* state_descriptions[] = {
+ "Idle",
+ "Selecting",
+ "Moving",
+ "Failed!",
+ "Success!"
+};
+
+const char* help_text[] = {
+ "linije - Color lines clone",
+ "==========================",
+ "Version " VERSION,
+ "",
+ "F1 - Show this help screen",
+ "Esc - Hide this help screen",
+ "Alt+Enter - Toggle fullscreen",
+ "C-Q - Exit",
+ "",
+ "---",
+ "",
+ "This program is licensed under the terms of GNU GPL v3 or (at your",
+ "option) any later version. Copyright (C) 2025 Strahinya Radich.",
+ "See the file LICENSE for exact copyright and license details.",
+ NULL
+};
+/* clang-format on */
+
+struct AnimationState {
+ SDL_FPoint start;
+ SDL_FPoint position;
+ SDL_FPoint end;
+ SDL_FPoint delta;
+ int active;
+ int step;
+ int final_step;
+};
+
+struct Cell {
+ int empty; /* logical variables */
+ int starting;
+ int ending;
+ int path;
+ SDL_FPoint coords;
+ int contents;
+ struct Cell* left;
+ struct Cell* up;
+ struct Cell* right;
+ struct Cell* down;
+ struct Cell* path_source; /* previous cell in shortest path */
+ struct Cell* path_next; /* next cell in shortest path */
+ int path_dist; /* length of shortest path so far */
+};
+
+struct State {
+ struct AnimationState animation;
+ struct Cell* grid;
+ int location_pointer;
+ SDL_Point* location_stack;
+ SDL_FPoint pointer;
+ float cell_scale_factor;
+ int display_width; /* Physical, detected */
+ int display_height;
+ int full_screen;
+ int help_shown;
+ int mode;
+ struct Cell* path_start;
+ struct Cell* path_end;
+ int redraw;
+ SDL_Renderer* renderer;
+ int running;
+ int screen_width; /* Logical */
+ int screen_height;
+ unsigned int score;
+ SDL_FPoint selection_start, selection_end;
+ SDL_Texture* sprites;
+ SDL_Texture* ter12_texture;
+ SDL_Texture* background;
+ SDL_Window* window;
+ float text_scale_factor;
+};
+
+void assign_pointFF(const SDL_FPoint* from, SDL_FPoint* to);
+void assign_pointIF(const SDL_Point* from, SDL_FPoint* to);
+void assign_point_xyIF(const int x, const int y, SDL_FPoint* to);
+void calculate_delta(struct State* state);
+void calculate_grid_origin(const struct State* state, float* sx, float* sy);
+void calculate_display_size(struct State* state);
+void check_five(struct State* state, struct Cell* c);
+void cleanup(struct State* state);
+void do_exit(const int code, struct State* state);
+void draw(struct State* state);
+void draw_background(struct State* state, SDL_FRect* bg_rect);
+void draw_help_dialog(struct State* state);
+void draw_text(struct State* state, const int x, const int y,
+ const int font_width, const int font_height, SDL_Texture* font_tex,
+ const char* text, ...);
+void fill_triplet(struct State* state);
+void find_shortest_path(struct Cell* c, struct Cell* source, const int dist);
+void get_sprite_xy(const char cell, float* x, float* y);
+void grid_coord_to_screen_coord(const struct State* state, const int x,
+ const int y, const float startx, const float starty, float* to_x,
+ float* to_y);
+void grid_coord_to_screen_coordF(const struct State* state, const float x,
+ const float y, const float startx, const float starty, float* to_x,
+ float* to_y);
+void handle_click(struct State* state);
+void handle_event(struct State* state, SDL_Event* event);
+void init_cell(struct Cell* c, const SDL_FPoint* coords);
+void init_state(struct State* state);
+int load_textures(struct State* state);
+int location_pop(struct State* state, SDL_Point* location);
+void location_push(struct State* state, const SDL_Point* location);
+void mark_path(struct Cell* c);
+void next_step(struct State* state);
+int passable(const struct State* state, const int x, const int y);
+void print_matrix(const struct Cell* M);
+void print_path(struct Cell* c);
+void reset(struct State* state);
+void reset_path(struct Cell* grid);
+void screen_coord_to_grid_coord(struct State* state, const int x, const int y,
+ const float startx, const float starty, float* to_x, float* to_y);
+void screen_coord_to_grid_coordF(struct State* state, const float x,
+ const float y, const float startx, const float starty, float* to_x,
+ float* to_y);
+void step_animation(struct State* state);
+SDL_Surface* try_load(const char* filename);
+
+void
+assign_pointFF(const SDL_FPoint* from, SDL_FPoint* to)
+{
+ assert((from != NULL) && (to != NULL));
+ to->x = (float)from->x;
+ to->y = (float)from->y;
+}
+
+void
+assign_pointIF(const SDL_Point* from, SDL_FPoint* to)
+{
+ assert((from != NULL) && (to != NULL));
+ to->x = (float)from->x;
+ to->y = (float)from->y;
+}
+
+void
+assign_point_xyIF(const int x, const int y, SDL_FPoint* to)
+{
+ assert(to != NULL);
+ to->x = (float)x;
+ to->y = (float)y;
+}
+
+void
+calculate_delta(struct State* state)
+{
+ struct AnimationState* animation;
+
+ assert(state != NULL);
+ animation = &state->animation;
+ animation->delta.x
+ = fabsf(animation->end.x - animation->start.x) / ANIM_STEPS;
+ if (animation->end.x < animation->start.x)
+ animation->delta.x *= -1;
+ animation->delta.y
+ = fabsf(animation->end.y - animation->start.y) / ANIM_STEPS;
+ if (animation->end.y < animation->start.y)
+ animation->delta.y *= -1;
+ SDL_LogDebug(SDL_LOG_CATEGORY_APPLICATION,
+ "calculate_delta: (%0.2f, %0.2f)", animation->delta.x,
+ animation->delta.y);
+}
+
+void
+calculate_grid_origin(const struct State* state, float* sx, float* sy)
+{
+ int cx, cy;
+
+ assert((state != NULL) && (sx != NULL) && (sy != NULL));
+ cx = state->screen_width / 2;
+ cy = state->screen_height / 2;
+
+ *sx = cx - (state->cell_scale_factor * GRID_WIDTH * CELL_SIZE) / 2;
+ *sy = cy - (state->cell_scale_factor * GRID_HEIGHT * CELL_SIZE) / 2;
+}
+
+void
+calculate_display_size(struct State* state)
+{
+ assert(state != NULL);
+ if (!SDL_GetRenderOutputSize(state->renderer, &state->display_width,
+ &state->display_height))
+ {
+ SDL_LogError(SDL_LOG_CATEGORY_ERROR,
+ "SDL_GetRenderOutputSize failed");
+ do_exit(1, state);
+ }
+ SDL_LogDebug(SDL_LOG_CATEGORY_APPLICATION,
+ "output display size: (%d, %d)", state->display_width,
+ state->display_height);
+}
+
+void
+check_five(struct State* state, struct Cell* c)
+{
+ struct Cell* current = NULL;
+ SDL_FPoint start, end;
+ int x, y, len;
+ int i;
+
+ i = 0;
+check_five_loop:
+ assign_pointFF(&c->coords, &start);
+ assign_pointFF(&c->coords, &end);
+ x = c->coords.x;
+ y = c->coords.y;
+ SDL_LogDebug(SDL_LOG_CATEGORY_APPLICATION, "Deltas: %d, %d",
+ check_five_deltas[i][0], check_five_deltas[i][1]);
+ len = 1;
+ while ((x >= 0 && y >= 0) && (x < GRID_WIDTH && y < GRID_HEIGHT))
+ {
+ SDL_LogDebug(SDL_LOG_CATEGORY_APPLICATION, "At (%d, %d): %s", x,
+ y, cell_names[state->grid[INDEX(x, y)].contents]);
+ if (state->grid[INDEX(x, y)].contents == c->contents)
+ {
+ assign_point_xyIF(x, y, &start);
+ len++;
+ }
+ else
+ break;
+ x += check_five_deltas[i][0];
+ y += check_five_deltas[i][1];
+ }
+ x = c->coords.x + check_five_deltas[i][2];
+ y = c->coords.y + check_five_deltas[i][3];
+ SDL_LogDebug(SDL_LOG_CATEGORY_APPLICATION, "Deltas: %d, %d",
+ check_five_deltas[i][2], check_five_deltas[i][3]);
+ while ((x >= 0 && y >= 0) && (x < GRID_WIDTH && y < GRID_HEIGHT))
+ {
+ SDL_LogDebug(SDL_LOG_CATEGORY_APPLICATION, "At (%d, %d): %s", x,
+ y, cell_names[state->grid[INDEX(x, y)].contents]);
+ if (state->grid[INDEX(x, y)].contents == c->contents)
+ {
+ assign_point_xyIF(x, y, &end);
+ len++;
+ }
+ else
+ break;
+ x += check_five_deltas[i][2];
+ y += check_five_deltas[i][3];
+ }
+ if (len > MIN_POP_LEN)
+ {
+ SDL_LogDebug(SDL_LOG_CATEGORY_APPLICATION,
+ "check_five: String, from (%0.0f, %0.0f) to (%0.0f, "
+ "%0.0f)",
+ start.x, start.y, end.x, end.y);
+
+ SDL_LogDebug(SDL_LOG_CATEGORY_APPLICATION,
+ "for (%0.0f; y != %0.0f + %d; y += %d)",
+ start.y, end.y, check_five_deltas[i][3],
+ check_five_deltas[i][3]);
+ SDL_LogDebug(SDL_LOG_CATEGORY_APPLICATION,
+ "for (%0.0f; x != %0.0f + %d; x += %d)",
+ start.x, end.x, check_five_deltas[i][2],
+ check_five_deltas[i][2]);
+ x = start.x;
+ y = start.y;
+ do
+ {
+ current = &state->grid[INDEX(x, y)];
+ SDL_LogDebug(SDL_LOG_CATEGORY_APPLICATION,
+ "Before erase: (%0.0f, %0.0f) [%d, %d] is %s",
+ current->coords.x,
+ current->coords.y,
+ x, y,
+ cell_names[current->contents]);
+ current->contents = CELL_EMPTY;
+ current->empty = 1;
+ SDL_LogDebug(SDL_LOG_CATEGORY_APPLICATION,
+ "After erase: (%0.0f, %0.0f) is %s",
+ current->coords.x,
+ current->coords.y,
+ cell_names[current->contents]);
+ x += check_five_deltas[i][2];
+ y += check_five_deltas[i][3];
+ }
+ while (!((x == end.x + check_five_deltas[i][2])
+ && (y == end.y + check_five_deltas[i][3])));
+
+ state->score += len * POP_STRING_CELL_VALUE;
+ goto check_five_finish;
+ }
+ else
+ {
+ SDL_LogDebug(SDL_LOG_CATEGORY_APPLICATION,
+ "check_five: len = %d, not popping", len);
+ }
+ i++;
+ if (i < sizeof(check_five_deltas) / sizeof(check_five_deltas[0]))
+ goto check_five_loop;
+
+ fill_triplet(state);
+
+check_five_finish:
+ state->mode = STATE_IDLE;
+}
+
+void
+cleanup(struct State* state)
+{
+ assert(state != NULL);
+
+ free(state->location_stack);
+ free(state->grid);
+
+ if (state->background)
+ SDL_DestroyTexture(state->background);
+ if (state->ter12_texture)
+ SDL_DestroyTexture(state->ter12_texture);
+ if (state->sprites)
+ SDL_DestroyTexture(state->sprites);
+ if (state->renderer)
+ SDL_DestroyRenderer(state->renderer);
+ if (state->window)
+ SDL_DestroyWindow(state->window);
+
+ SDL_Quit();
+}
+
+void
+do_exit(const int code, struct State* state)
+{
+ cleanup(state);
+ exit(code);
+}
+
+void
+draw(struct State* state)
+{
+ struct Cell* c = NULL;
+ SDL_FRect bg_rect, cell_rect;
+ SDL_FRect dest_rect;
+ int x, y;
+ float crx, cry;
+ float drx, dry;
+ float startx, starty;
+
+ assert(state != NULL);
+ assert(state->cell_scale_factor != 0.0f);
+
+ calculate_grid_origin(state, &startx, &starty);
+
+ bg_rect.x = 0;
+ bg_rect.y = 0;
+ bg_rect.w = state->cell_scale_factor * (CELL_SIZE * GRID_WIDTH + 1);
+ bg_rect.h = state->cell_scale_factor * (CELL_SIZE * GRID_HEIGHT + 1);
+
+ SDL_SetRenderDrawColor(state->renderer, 0, 0, 0, SDL_ALPHA_OPAQUE);
+ SDL_RenderClear(state->renderer);
+
+ /* Render background */
+ if (!state->background)
+ draw_background(state, &bg_rect);
+
+ /* Draw buffered copy of background */
+ dest_rect.x = startx;
+ dest_rect.y = starty;
+ dest_rect.w = bg_rect.w;
+ dest_rect.h = bg_rect.h;
+ SDL_RenderLine(state->renderer, 1, 1, 50, 50);
+ SDL_RenderTexture(state->renderer, state->background, &bg_rect,
+ &dest_rect);
+
+ /* Draw balls */
+ cell_rect.w = CELL_SIZE;
+ cell_rect.h = CELL_SIZE;
+ dest_rect.w = state->cell_scale_factor * CELL_SIZE;
+ dest_rect.h = state->cell_scale_factor * CELL_SIZE;
+ for (y = 0; y < GRID_HEIGHT; y++)
+ for (x = 0; x < GRID_WIDTH; x++)
+ {
+ c = &state->grid[INDEX(x, y)];
+ if (c->contents == CELL_EMPTY)
+ continue;
+
+ get_sprite_xy(c->contents, &crx, &cry);
+ cell_rect.x = crx;
+ cell_rect.y = cry;
+ if (c->path)
+ {
+ grid_coord_to_screen_coord(state,
+ state->animation.position.x,
+ state->animation.position.y, startx + 1,
+ starty + 1, &drx, &dry);
+ }
+ else
+ {
+ grid_coord_to_screen_coord(state, x, y,
+ startx + 1, starty + 1, &drx, &dry);
+ }
+ dest_rect.x = drx;
+ dest_rect.y = dry;
+ SDL_RenderTexture(state->renderer, state->sprites,
+ &cell_rect, &dest_rect);
+ }
+
+ /* Draw selection */
+ if (state->selection_start.x != -1)
+ {
+ get_sprite_xy(CELL_SELECTED, &crx, &cry);
+ cell_rect.x = crx;
+ cell_rect.y = cry;
+ grid_coord_to_screen_coord(state, state->selection_start.x,
+ state->selection_start.y, startx + 1, starty + 1, &drx,
+ &dry);
+ dest_rect.x = drx;
+ dest_rect.y = dry;
+ SDL_RenderTexture(state->renderer, state->sprites, &cell_rect,
+ &dest_rect);
+ }
+
+ /* Render status */
+ draw_text(state, 0,
+ state->screen_height - state->text_scale_factor * TER12_HEIGHT,
+ TER12_WIDTH, TER12_HEIGHT, state->ter12_texture,
+ "Score: %06u F1 = Help Status: %s", state->score,
+ state_descriptions[state->mode]);
+
+ if (state->help_shown)
+ draw_help_dialog(state);
+
+ /*draw_text(600, screen_height - text_scale_factor * TER12_HEIGHT,
+ TER12_WIDTH, TER12_HEIGHT, ter12_texture, "(%05.2f, %05.2f)",
+ pointer.x, pointer.y);*/
+
+ SDL_RenderPresent(state->renderer);
+}
+
+void
+draw_background(struct State* state, SDL_FRect* bg_rect)
+{
+ const SDL_DisplayMode* mode;
+ SDL_FRect cell_rect, dest_rect;
+ SDL_DisplayID display;
+ float crx, cry;
+ float drx, dry;
+ int x, y;
+
+ assert((state != NULL) && (bg_rect != NULL));
+ assert(state->cell_scale_factor != 0.0f);
+
+ if ((display = SDL_GetDisplayForWindow(state->window)) == 0)
+ {
+ SDL_LogError(SDL_LOG_CATEGORY_ERROR,
+ "SDL_GetDisplayForWindow failed: %s", SDL_GetError());
+ do_exit(1, state);
+ }
+
+ if ((mode = SDL_GetCurrentDisplayMode(display)) == NULL)
+ {
+ SDL_LogError(SDL_LOG_CATEGORY_ERROR,
+ "SDL_GetCurrentDisplayMode failed: %s", SDL_GetError());
+ do_exit(1, state);
+ }
+
+ state->background = SDL_CreateTexture(state->renderer, mode->format,
+ SDL_TEXTUREACCESS_TARGET, bg_rect->w, bg_rect->h);
+ if (!state->background)
+ {
+ SDL_LogError(SDL_LOG_CATEGORY_ERROR,
+ "SDL_CreateTexture failed: %s", SDL_GetError());
+ do_exit(1, state);
+ }
+ if (!SDL_SetRenderTarget(state->renderer, state->background))
+ {
+ SDL_LogError(SDL_LOG_CATEGORY_ERROR,
+ "SDL_SetRenderTarget failed: %s", SDL_GetError());
+ do_exit(1, state);
+ }
+
+ dest_rect.w = state->cell_scale_factor * CELL_SIZE;
+ dest_rect.h = state->cell_scale_factor * CELL_SIZE;
+ get_sprite_xy(CELL_EMPTY, &crx, &cry);
+ cell_rect.x = crx;
+ cell_rect.y = cry;
+ cell_rect.w = CELL_SIZE;
+ cell_rect.h = CELL_SIZE;
+ for (y = 0; y < GRID_HEIGHT; y++)
+ for (x = 0; x < GRID_WIDTH; x++)
+ {
+ grid_coord_to_screen_coord(state, x, y, 0.0f, 0.0f,
+ &drx, &dry);
+ dest_rect.x = state->cell_scale_factor + drx;
+ dest_rect.y = state->cell_scale_factor + dry;
+ SDL_RenderTexture(state->renderer, state->sprites,
+ &cell_rect, &dest_rect);
+ }
+
+ /* Draw upper border */
+ for (x = -1; x < GRID_WIDTH; x++)
+ {
+ grid_coord_to_screen_coord(state, x, -1, 0.0f, 0.0f, &drx, &dry);
+ dest_rect.x = state->cell_scale_factor + drx;
+ dest_rect.y = state->cell_scale_factor + dry;
+ SDL_RenderTexture(state->renderer, state->sprites, &cell_rect,
+ &dest_rect);
+ }
+
+ /* Draw left border */
+ for (y = 0; y < GRID_WIDTH; y++)
+ {
+ grid_coord_to_screen_coord(state, -1, y, 0.0f, 0.0f, &drx, &dry);
+ dest_rect.x = state->cell_scale_factor + drx;
+ dest_rect.y = state->cell_scale_factor + dry;
+ SDL_RenderTexture(state->renderer, state->sprites, &cell_rect,
+ &dest_rect);
+ }
+
+ SDL_SetRenderDrawBlendMode(state->renderer, SDL_BLENDMODE_NONE);
+ SDL_SetRenderDrawColor(state->renderer, 255, 255, 255, SDL_ALPHA_OPAQUE);
+
+ SDL_SetRenderTarget(state->renderer, NULL);
+}
+
+void
+draw_help_dialog(struct State* state)
+{
+ const char** phelp_text = help_text;
+ int sx = state->screen_width / 2 - HELP_DIALOG_WIDTH / 2;
+ int sy = state->screen_height / 2 - HELP_DIALOG_HEIGHT / 2;
+ SDL_FRect dialog_rect;
+
+ dialog_rect.x = sx;
+ dialog_rect.y = sy;
+ dialog_rect.w = HELP_DIALOG_WIDTH;
+ dialog_rect.h = HELP_DIALOG_HEIGHT;
+
+ SDL_SetRenderDrawBlendMode(state->renderer, SDL_BLENDMODE_BLEND);
+ SDL_SetRenderDrawColor(state->renderer, 0, 0, 0, .75 * 255);
+ SDL_RenderFillRect(state->renderer, &dialog_rect);
+
+ SDL_SetRenderDrawBlendMode(state->renderer, SDL_BLENDMODE_NONE);
+ SDL_SetRenderDrawColor(state->renderer, 255, 255, 255, SDL_ALPHA_OPAQUE);
+ SDL_RenderRect(state->renderer, &dialog_rect);
+ SDL_SetRenderDrawColor(state->renderer, 0, 0, 0, SDL_ALPHA_OPAQUE);
+ dialog_rect.x--;
+ dialog_rect.y--;
+ dialog_rect.w += 2;
+ dialog_rect.h += 2;
+ SDL_RenderRect(state->renderer, &dialog_rect);
+ dialog_rect.x--;
+ dialog_rect.y--;
+ dialog_rect.w += 2;
+ dialog_rect.h += 2;
+ SDL_RenderRect(state->renderer, &dialog_rect);
+
+ while (*phelp_text)
+ {
+ draw_text(state,
+ sx + state->text_scale_factor * (2 * TER12_WIDTH),
+ sy
+ + (phelp_text - help_text + 1)
+ * state->text_scale_factor
+ * (TER12_HEIGHT + 2),
+ TER12_WIDTH, TER12_HEIGHT, state->ter12_texture,
+ *phelp_text);
+ phelp_text++;
+ }
+}
+
+void
+draw_text(struct State* state, const int x, const int y, const int font_width,
+ const int font_height, SDL_Texture* font_tex, const char* text, ...)
+{
+ char buf[PRINT_BUFSIZE];
+ va_list args;
+ const char* pbuf = NULL;
+ int xstart = 0;
+ int ystart = 0;
+ SDL_FRect source_rect;
+ SDL_FRect dest_rect;
+ int index = 0;
+ int chars_per_row = 0;
+ char first_char = ' ';
+ char last_char = '~';
+ float tex_w, tex_h;
+
+ assert((font_tex != NULL) && (text != NULL));
+ assert(state->text_scale_factor != 0.0f);
+ assert(font_width != -1);
+
+ va_start(args, text);
+ vsnprintf(buf, sizeof(buf), text, args);
+ va_end(args);
+
+ source_rect.w = font_width;
+ source_rect.h = font_height;
+
+ dest_rect.x = x;
+ dest_rect.y = y;
+ dest_rect.w = state->text_scale_factor * font_width;
+ dest_rect.h = state->text_scale_factor * font_height;
+
+ if (!SDL_GetTextureSize(font_tex, &tex_w, &tex_h))
+ {
+ SDL_LogError(SDL_LOG_CATEGORY_ERROR,
+ "SDL_GetTextureSize failed: %s", SDL_GetError());
+ do_exit(1, state);
+ }
+
+ chars_per_row = tex_w / (font_width + 1);
+
+ pbuf = buf;
+ // SDL_SetRenderScale(renderer, scale_factor, scale_factor);
+ while (*pbuf)
+ {
+ if (*pbuf >= first_char && *pbuf <= last_char)
+ {
+ index = (int)(*pbuf - first_char);
+
+ xstart = 1 + index % chars_per_row * (font_width + 1);
+ ystart = 1 + index / chars_per_row * (font_height + 1);
+ }
+ else
+ break;
+
+ source_rect.x = xstart;
+ source_rect.y = ystart;
+
+ SDL_RenderTexture(state->renderer, font_tex, &source_rect,
+ &dest_rect);
+
+ dest_rect.x += state->text_scale_factor * font_width;
+
+ pbuf++;
+ }
+ // SDL_SetRenderScale(renderer, 1.0f, 1.0f);
+}
+
+void
+fill_triplet(struct State* state)
+{
+ int x, y;
+ int pass;
+ char color;
+
+ pass = 0;
+fill_triplet_generate:
+ x = random() % GRID_WIDTH;
+ y = random() % GRID_HEIGHT;
+ if (state->grid[INDEX(x, y)].contents != CELL_EMPTY)
+ goto fill_triplet_generate;
+
+ switch (random() % 5)
+ {
+ case 0:
+ color = CELL_RED;
+ break;
+ case 1:
+ color = CELL_BLUE;
+ break;
+ case 2:
+ color = CELL_GREEN;
+ break;
+ case 3:
+ color = CELL_PURPLE;
+ break;
+ default:
+ color = CELL_ORANGE;
+ }
+ state->grid[INDEX(x, y)].contents = color;
+ state->grid[INDEX(x, y)].empty = 0;
+ pass++;
+ SDL_LogDebug(SDL_LOG_CATEGORY_APPLICATION,
+ "fill_triplet: %s at (%d, %d)", cell_names[(int)color], x, y);
+ if (pass < 3)
+ goto fill_triplet_generate;
+}
+
+void
+find_shortest_path(struct Cell* c, struct Cell* source, const int dist)
+{
+ if (!c || c->path_dist <= dist)
+ return;
+
+ if (!c->empty && !c->starting && !c->ending)
+ return;
+
+ if (c->starting)
+ c->path_dist = dist;
+
+ if (c->path_dist > dist)
+ {
+ c->path_dist = dist;
+ c->path_source = source;
+ }
+
+ if (c->ending)
+ return;
+
+ find_shortest_path(c->left, c, dist + 1);
+ find_shortest_path(c->up, c, dist + 1);
+ find_shortest_path(c->right, c, dist + 1);
+ find_shortest_path(c->down, c, dist + 1);
+}
+
+void
+get_sprite_xy(const char cell, float* x, float* y)
+{
+ assert((x != NULL) && (y != NULL));
+ switch (cell)
+ {
+ case CELL_RED:
+ *x = 1 * CELL_SIZE;
+ *y = 0;
+ break;
+ case CELL_BLUE:
+ *x = 2 * CELL_SIZE;
+ *y = 0;
+ break;
+ case CELL_GREEN:
+ *x = 3 * CELL_SIZE;
+ *y = 0;
+ break;
+ case CELL_PURPLE:
+ *x = 4 * CELL_SIZE;
+ *y = 0;
+ break;
+ case CELL_ORANGE:
+ *x = 5 * CELL_SIZE;
+ *y = 0;
+ break;
+ case CELL_SELECTED:
+ *x = 0;
+ *y = 1 * CELL_SIZE;
+ break;
+ default:
+ *x = 0;
+ *y = 0;
+ }
+ /*SDL_LogDebug("get_sprite_xy: %d @ (%0.0f, %0.0f)",
+ cell, *x, *y);*/
+}
+
+void
+grid_coord_to_screen_coord(const struct State* state, const int x, const int y,
+ const float startx, const float starty, float* to_x, float* to_y)
+{
+ assert((state != NULL) && (to_x != NULL) && (to_y != NULL));
+ *to_x = startx + x * state->cell_scale_factor * CELL_SIZE;
+ *to_y = starty + y * state->cell_scale_factor * CELL_SIZE;
+}
+
+void
+grid_coord_to_screen_coordF(const struct State* state, const float x,
+ const float y, const float startx, const float starty, float* to_x,
+ float* to_y)
+{
+ assert((state != NULL) && (to_x != NULL) && (to_y != NULL));
+ *to_x = startx + x * state->cell_scale_factor * CELL_SIZE;
+ *to_y = starty + y * state->cell_scale_factor * CELL_SIZE;
+}
+
+static char* cell_image[] = {"[ ]", "[R]", "[B]", "[G]", "[P]", "[O]", "[/]",
+ "[S]", "[E]", "[.]"};
+
+#define CELL_START 7
+#define CELL_END 8
+#define CELL_PATH 9
+
+void
+handle_click(struct State* state)
+{
+ float startx, starty;
+
+ assert(state != NULL);
+ if (state->mode == STATE_IDLE)
+ {
+ calculate_grid_origin(state, &startx, &starty);
+ screen_coord_to_grid_coord(state, state->pointer.x,
+ state->pointer.y, startx, starty,
+ &state->selection_start.x, &state->selection_start.y);
+ state->animation.start.x = (int)state->selection_start.x;
+ state->animation.start.y = (int)state->selection_start.y;
+ state->animation.position.x = state->animation.start.x;
+ state->animation.position.y = state->animation.start.y;
+ state->path_start
+ = &state->grid[INDEXFI(state->animation.start.x,
+ state->animation.start.y)];
+ SDL_LogDebug(SDL_LOG_CATEGORY_APPLICATION,
+ "path_start(%0.2f, %0.2f)->empty = %s",
+ state->path_start->coords.x,
+ state->path_start->coords.y,
+ state->path_start->empty ? "TRUE" : "FALSE");
+ if (state->path_start->empty)
+ {
+ state->path_start = NULL;
+ state->selection_start.x = -1;
+ state->selection_start.y = -1;
+ return;
+ }
+
+ state->mode = STATE_SELECTION;
+ state->path_start->starting = 1;
+ SDL_LogDebug(SDL_LOG_CATEGORY_APPLICATION,
+ "[origin = (%0.2f, %0.2f)] "
+ "pointer = (%0.2f, %0.2f) => "
+ "selected = (%0.2f, %0.2f)",
+ startx, starty, state->pointer.x, state->pointer.y,
+ state->selection_start.x, state->selection_start.y);
+ state->redraw = 1;
+ }
+ else if (state->mode == STATE_SELECTION)
+ {
+ state->mode = STATE_MOVING;
+ calculate_grid_origin(state, &startx, &starty);
+ screen_coord_to_grid_coord(state, state->pointer.x,
+ state->pointer.y, startx, starty,
+ &state->selection_end.x, &state->selection_end.y);
+ state->path_end = &state->grid[INDEXFI(state->selection_end.x,
+ state->selection_end.y)];
+
+ if (!state->path_end->empty)
+ goto handle_click_reset;
+
+ SDL_LogDebug(SDL_LOG_CATEGORY_APPLICATION,
+ "[origin = (%0.2f, %0.2f)] "
+ "pointer = (%0.2f, %0.2f) => "
+ "selected_end = (%0.2f, %0.2f)",
+ startx, starty, state->pointer.x, state->pointer.y,
+ state->selection_end.x, state->selection_end.y);
+
+ SDL_LogDebug(SDL_LOG_CATEGORY_APPLICATION,
+ "Path: (%0.0f, %0.0f) to (%0.0f, %0.0f)",
+ state->path_start->coords.x,
+ state->path_start->coords.y, state->path_end->coords.x,
+ state->path_end->coords.y);
+ state->path_end->ending = 1;
+
+ find_shortest_path(state->path_start, NULL, 0);
+ mark_path(state->path_end);
+ printf("M =\n");
+ print_matrix(state->grid);
+
+ /* Should never happen */
+ if (!state->path_start->path_next)
+ goto handle_click_reset;
+
+ state->animation.end.x = state->path_start->path_next->coords.x;
+ state->animation.end.y = state->path_start->path_next->coords.y;
+ SDL_LogDebug(SDL_LOG_CATEGORY_APPLICATION,
+ "Animation: (%0.0f, %0.0f) to (%0.0f, %0.0f)",
+ state->animation.start.x, state->animation.start.y,
+ state->animation.end.x, state->animation.end.y);
+ state->selection_start.x = -1;
+ state->selection_start.y = -1;
+ calculate_delta(state);
+ state->animation.step = 1;
+ state->animation.final_step = ANIM_STEPS;
+ state->animation.active = 1;
+ state->redraw = 1;
+ print_path(&state->grid[INDEXFI(state->animation.start.x,
+ state->animation.start.y)]);
+ }
+ return;
+
+handle_click_reset:
+ SDL_LogDebug(SDL_LOG_CATEGORY_APPLICATION, "handle_click: Reset");
+ state->selection_start.x = -1;
+ state->selection_start.y = -1;
+ state->path_start->starting = 0;
+ state->path_start = NULL;
+ state->path_end->ending = 0;
+ state->path_end = NULL;
+ state->mode = STATE_IDLE;
+ state->redraw = 1;
+}
+
+void
+handle_event(struct State* state, SDL_Event* event)
+{
+ /* assert(3) within the SDL_PollEvent(3) loop hangs the entire system
+ * when given an argument which evaluates to zero, so we are taking the
+ * risk here (and only here) */
+ /*assert((state != NULL) && (event != NULL));*/
+
+ switch (event->type)
+ {
+ case SDL_EVENT_QUIT:
+ state->running = 0;
+ break;
+ case SDL_EVENT_WINDOW_RESIZED:
+ state->redraw = 1;
+ calculate_display_size(state);
+ break;
+ case SDL_EVENT_KEY_DOWN:
+ SDL_LogDebug(SDL_LOG_CATEGORY_APPLICATION,
+ "Got Keydown, key = %X, mod = %X", event->key.key,
+ event->key.mod);
+
+ switch (event->key.key)
+ {
+ case SDLK_F1:
+ state->help_shown = 1;
+ state->redraw = 1;
+ break;
+ case SDLK_RETURN:
+ if (!(event->key.mod & SDL_KMOD_ALT))
+ break;
+ state->full_screen = !state->full_screen;
+ SDL_LogDebug(SDL_LOG_CATEGORY_APPLICATION,
+ "Set fullscreen state: %s",
+ state->full_screen ? "ON" : "OFF");
+ SDL_SetWindowFullscreen(state->window,
+ state->full_screen);
+ break;
+ case SDLK_ESCAPE:
+ state->help_shown = 0;
+ state->redraw = 1;
+ break;
+ case SDLK_Q:
+ if (event->key.mod & SDL_KMOD_CTRL)
+ state->running = 0;
+ break;
+ default:
+ SDL_LogDebug(SDL_LOG_CATEGORY_APPLICATION,
+ "Handle keyboard event: switch fallthrough");
+ }
+ break;
+ case SDL_EVENT_MOUSE_BUTTON_UP:
+ handle_click(state);
+ break;
+ case SDL_EVENT_MOUSE_MOTION:
+ state->pointer.x = event->motion.x;
+ state->pointer.y = event->motion.y;
+ state->redraw = 1;
+ break;
+ }
+}
+
+void
+init_animation(struct AnimationState* animation)
+{
+ assert(animation != NULL);
+ animation->start.x = -1;
+ animation->start.y = -1;
+ animation->position.x = -1;
+ animation->position.y = -1;
+ animation->end.x = -1;
+ animation->end.y = -1;
+ animation->delta.x = 0;
+ animation->delta.y = 0;
+ animation->active = 0;
+ animation->step = 0;
+ animation->final_step = 0;
+}
+
+void
+init_cell(struct Cell* c, const SDL_FPoint* coords)
+{
+ assert((c != NULL) && (coords != NULL));
+ c->empty = 1;
+ c->starting = 0;
+ c->ending = 0;
+ c->path = 0;
+ c->coords.x = coords->x;
+ c->coords.y = coords->y;
+ c->contents = CELL_EMPTY;
+ c->left = c->up = c->right = c->down = NULL;
+ c->path_source = NULL;
+ c->path_dist = INT_MAX;
+}
+
+void
+init_state(struct State* state)
+{
+ assert(state != NULL);
+ init_animation(&state->animation);
+ state->grid = NULL;
+ state->location_pointer = 0;
+ state->location_stack = NULL;
+ state->cell_scale_factor = 2.0f;
+ state->display_width = DEFAULT_WIDTH;
+ state->display_height = DEFAULT_HEIGHT;
+ state->full_screen = 1;
+ state->help_shown = 0;
+ state->path_start = NULL;
+ state->path_end = NULL;
+ state->redraw = 1;
+ state->renderer = NULL;
+ state->running = 1;
+ state->screen_width = DEFAULT_WIDTH;
+ state->screen_height = DEFAULT_HEIGHT;
+ state->score = 0;
+ state->sprites = NULL;
+ state->mode = STATE_IDLE;
+ state->ter12_texture = NULL;
+ state->background = NULL;
+ state->window = NULL;
+ state->text_scale_factor = 2.0f;
+}
+
+int
+load_textures(struct State* state)
+{
+ SDL_Surface* surface = NULL;
+ SDL_ScaleMode scale_mode = SDL_SCALEMODE_PIXELART;
+
+ assert(state != NULL);
+
+ surface = try_load(SPRITES_PNG);
+ if (!surface)
+ return -1;
+ state->sprites = SDL_CreateTextureFromSurface(state->renderer, surface);
+ if (!state->sprites)
+ {
+ SDL_LogError(SDL_LOG_CATEGORY_ERROR,
+ "SDL_CreateTextureFromSurface failed: %s",
+ SDL_GetError());
+ do_exit(1, state);
+ }
+ SDL_SetTextureScaleMode(state->sprites, scale_mode);
+ SDL_DestroySurface(surface);
+
+ surface = try_load(TER12_PNG);
+ if (!surface)
+ return -1;
+ state->ter12_texture
+ = SDL_CreateTextureFromSurface(state->renderer, surface);
+ if (!state->ter12_texture)
+ {
+ SDL_LogError(SDL_LOG_CATEGORY_ERROR,
+ "SDL_CreateTextureFromSurface failed: %s",
+ SDL_GetError());
+ do_exit(1, state);
+ }
+ SDL_SetTextureScaleMode(state->ter12_texture, scale_mode);
+ SDL_DestroySurface(surface);
+
+ return 0;
+}
+
+int
+location_pop(struct State* state, SDL_Point* location)
+{
+ assert((state != NULL) && (location != NULL));
+ if (state->location_pointer == 0)
+ return 1;
+ state->location_pointer--;
+ location->x = state->location_stack[state->location_pointer].x;
+ location->y = state->location_stack[state->location_pointer].y;
+ return 0;
+}
+
+void
+location_push(struct State* state, const SDL_Point* location)
+{
+ assert(location != NULL);
+ state->location_stack[state->location_pointer].x = location->x;
+ state->location_stack[state->location_pointer].y = location->y;
+ state->location_pointer++;
+}
+
+void
+mark_path(struct Cell* c)
+{
+ if (!c)
+ return;
+
+ c->path = 1;
+ if (c->path_source)
+ {
+ c->path_source->path_next = c;
+ SDL_LogDebug(SDL_LOG_CATEGORY_APPLICATION,
+ "mark_path: Next of (%0.0f, %0.0f) is (%0.0f, %0.0f)",
+ c->path_source->coords.x, c->path_source->coords.y,
+ c->path_source->path_next->coords.x,
+ c->path_source->path_next->coords.y);
+ }
+ mark_path(c->path_source);
+}
+
+void
+next_step(struct State* state)
+{
+ assert(state != NULL);
+ state->redraw = 1;
+}
+
+int
+passable(const struct State* state, const int x, const int y)
+{
+ assert(state != NULL);
+ return x >= 0 && x < GRID_WIDTH && y >= 0 && y < GRID_HEIGHT
+ && state->grid[INDEX(x, y)].contents == CELL_EMPTY;
+}
+
+void
+print_matrix(const struct Cell* M)
+{
+ const struct Cell* c = NULL;
+ int x, y;
+
+ for (y = 0; y < GRID_HEIGHT; y++)
+ {
+ for (x = 0; x < GRID_WIDTH; x++)
+ {
+ c = &M[INDEX(x, y)];
+ if (c->starting)
+ printf("%s", cell_image[CELL_START]);
+ else if (c->ending)
+ printf("%s", cell_image[CELL_END]);
+ else if (c->path)
+ printf("%s", cell_image[CELL_PATH]);
+ else if (!c->empty)
+ printf("%s", cell_image[c->contents]);
+ else
+ printf("%s", cell_image[CELL_EMPTY]);
+ }
+ printf("\n");
+ }
+ // printf("\n");
+}
+
+void
+print_path(struct Cell* c)
+{
+ printf("(%0.0f, %0.0f)", c->coords.x, c->coords.y);
+ if (c->path_next)
+ {
+ printf(" -> ");
+ print_path(c->path_next);
+ }
+ else
+ printf("\n");
+}
+
+void
+reset(struct State* state)
+{
+ for (int y = 0; y < GRID_HEIGHT; y++)
+ for (int x = 0; x < GRID_WIDTH; x++)
+ state->grid[INDEX(x, y)].contents = CELL_EMPTY;
+ state->mode = STATE_IDLE;
+ state->selection_start.x = -1;
+ state->selection_start.y = -1;
+ state->selection_end.x = -1;
+ state->selection_end.y = -1;
+ state->location_pointer = 0;
+ state->animation.active = 0;
+ state->redraw = 1;
+}
+
+void
+reset_path(struct Cell* grid)
+{
+ struct Cell* c = NULL;
+ int x, y;
+
+ assert(grid != NULL);
+
+ for (y = 0; y < GRID_HEIGHT; y++)
+ for (x = 0; x < GRID_WIDTH; x++)
+ {
+ c = &grid[INDEX(x, y)];
+ c->path_source = NULL;
+ c->path_next = NULL;
+ c->path_dist = INT_MAX;
+ c->starting = 0;
+ c->ending = 0;
+ c->path = 0;
+ }
+}
+
+void
+screen_coord_to_grid_coord(struct State* state, const int x, const int y,
+ const float startx, const float starty, float* to_x, float* to_y)
+{
+ float _factor_x, _factor_y;
+ float _startx, _starty;
+
+ assert(state != NULL);
+ assert((to_x != NULL) && (to_y != NULL)
+ && (state->cell_scale_factor != 0.0f));
+ _factor_x = (float)state->display_width / state->screen_width;
+ _factor_y = (float)state->display_height / state->screen_height;
+ _startx = startx * _factor_x;
+ _starty = starty * _factor_y;
+
+ /* clang-format off */
+ *to_x = x >= _startx
+ ? (x < _startx + _factor_x * state->cell_scale_factor
+ * CELL_SIZE * GRID_WIDTH
+ ? (x - _startx) / (_factor_x * state->cell_scale_factor
+ * CELL_SIZE)
+ : GRID_WIDTH - 1)
+ : 0;
+ *to_y = y >= _starty
+ ? (y < _starty + _factor_y * state->cell_scale_factor
+ * CELL_SIZE * GRID_HEIGHT
+ ? (y - _starty) / (_factor_y * state->cell_scale_factor
+ * CELL_SIZE)
+ : GRID_HEIGHT - 1)
+ : 0;
+ /* clang-format on */
+}
+
+void
+screen_coord_to_grid_coordF(struct State* state, const float x, const float y,
+ const float startx, const float starty, float* to_x, float* to_y)
+{
+ float _factor_x, _factor_y;
+ float _startx, _starty;
+
+ assert(state != NULL);
+ assert((to_x != NULL) && (to_y != NULL)
+ && (state->cell_scale_factor != 0.0f));
+ _factor_x = (float)state->display_width / state->screen_width;
+ _factor_y = (float)state->display_height / state->screen_height;
+ _startx = startx * _factor_x;
+ _starty = starty * _factor_y;
+
+ /* clang-format off */
+ *to_x = x >= _startx
+ ? (x < _startx + _factor_x * state->cell_scale_factor
+ * CELL_SIZE * GRID_WIDTH
+ ? (x - _startx) / (_factor_x * state->cell_scale_factor
+ * CELL_SIZE)
+ : GRID_WIDTH - 1)
+ : 0;
+ *to_y = y >= _starty
+ ? (y < _starty + _factor_y * state->cell_scale_factor
+ * CELL_SIZE * GRID_HEIGHT
+ ? (y - _starty) / (_factor_y * state->cell_scale_factor
+ * CELL_SIZE)
+ : GRID_HEIGHT - 1)
+ : 0;
+ /* clang-format on */
+}
+
+void
+step_animation(struct State* state)
+{
+ struct Cell* from = NULL;
+ struct Cell* to = NULL;
+ int isx, isy, iex, iey;
+
+ if (state->animation.step == state->animation.final_step)
+ {
+ isx = (int)round(state->animation.start.x);
+ isy = (int)round(state->animation.start.y);
+ iex = (int)round(state->animation.end.x);
+ iey = (int)round(state->animation.end.y);
+ from = &state->grid[INDEX(isx, isy)];
+ to = &state->grid[INDEX(iex, iey)];
+
+ if (to->ending)
+ {
+ state->animation.active = 0;
+ SDL_LogDebug(SDL_LOG_CATEGORY_APPLICATION,
+ "Ending node reached: (%0.0f, %0.0f)",
+ state->animation.end.x, state->animation.end.y);
+ }
+ else if (to->path_next)
+ {
+ state->animation.start.x = state->animation.end.x;
+ state->animation.start.y = state->animation.end.y;
+ state->animation.position.x = state->animation.start.x;
+ state->animation.position.y = state->animation.start.y;
+ state->animation.end.x = to->path_next->coords.x;
+ state->animation.end.y = to->path_next->coords.y;
+ SDL_LogDebug(SDL_LOG_CATEGORY_APPLICATION,
+ "Next node on path: (%0.0f, %0.0f)",
+ state->animation.end.x, state->animation.end.y);
+ SDL_LogDebug(SDL_LOG_CATEGORY_APPLICATION,
+ "Animation: (%0.0f, %0.0f) to (%0.0f, %0.0f)",
+ state->animation.start.x,
+ state->animation.start.y,
+ state->animation.end.x, state->animation.end.y);
+ calculate_delta(state);
+ state->animation.step = 1;
+ }
+ else
+ {
+ SDL_LogDebug(SDL_LOG_CATEGORY_APPLICATION,
+ "End of path at (%0.0f, %0.0f)",
+ state->animation.end.x, state->animation.end.y);
+ state->animation.active = 0;
+ }
+
+ SDL_LogDebug(SDL_LOG_CATEGORY_APPLICATION,
+ "grid[%d][%d] = %d <-> grid[%d][%d] = %d", iey, iex,
+ to->contents, isy, isx, from->contents);
+ to->contents = from->contents;
+ from->contents = CELL_EMPTY;
+ to->empty = 0;
+ from->empty = 1;
+
+ if (to->ending)
+ {
+ reset_path(state->grid);
+ state->path_start = NULL;
+ state->path_end = NULL;
+
+ check_five(state, to);
+ }
+ }
+
+ // print_path(&grid[INDEXFI(animation.start.x, animation.start.y)]);
+ state->animation.position.x += state->animation.delta.x;
+ state->animation.position.y += state->animation.delta.y;
+ state->animation.step++;
+ SDL_LogDebug(SDL_LOG_CATEGORY_APPLICATION,
+ "step_animation: (%0.2f, %0.2f) => (%0.2f, %0.2f), [%d/%d] %s",
+ state->animation.position.x, state->animation.position.y,
+ state->animation.end.x, state->animation.end.y,
+ state->animation.step, state->animation.final_step,
+ state->animation.active ? "ACTIVE" : "INACTIVE");
+}
+
+SDL_Surface*
+try_load(const char* filename)
+{
+ SDL_Surface* surface = NULL;
+ char tex_pathname[BUFSIZE];
+
+ assert(filename != NULL);
+ snprintf(tex_pathname, BUFSIZE, "%s/%s", DATADIR, filename);
+ surface = IMG_Load(tex_pathname);
+ if (!surface)
+ {
+ SDL_LogError(SDL_LOG_CATEGORY_ERROR,
+ "try_load: IMG_Load failed: %s", SDL_GetError());
+ snprintf(tex_pathname, BUFSIZE, "./%s", filename);
+ SDL_LogDebug(SDL_LOG_CATEGORY_APPLICATION,
+ "try_load: trying %s", tex_pathname);
+ surface = IMG_Load(tex_pathname);
+ if (!surface)
+ {
+ SDL_LogError(SDL_LOG_CATEGORY_ERROR,
+ "try_load: IMG_Load failed: %s",
+ SDL_GetError());
+ exit(1);
+ }
+ SDL_LogDebug(SDL_LOG_CATEGORY_APPLICATION,
+ "try_load: success (%s)", tex_pathname);
+ }
+
+ return surface;
+}
+
+int
+main(int argc, char** argv)
+{
+ SDL_Event event;
+ struct Cell* c = NULL;
+ struct State state;
+ struct timespec now;
+ SDL_FPoint coords;
+ float px, py;
+ clockid_t cid;
+ unsigned int last_time, current_time;
+ int x, y;
+
+ /*atexit(&cleanup);*/
+
+ init_state(&state);
+
+ if (!SDL_Init(SDL_INIT_VIDEO))
+ {
+ SDL_LogError(SDL_LOG_CATEGORY_ERROR, "SDL_Init failed: %s",
+ SDL_GetError());
+ exit(1);
+ }
+
+ SDL_SetLogPriorities(SDL_LOG_PRIORITY_DEBUG);
+ if (!SDL_CreateWindowAndRenderer(WIN_TITLE, DEFAULT_WIDTH,
+ DEFAULT_HEIGHT,
+ SDL_WINDOW_FULLSCREEN | SDL_WINDOW_BORDERLESS,
+ &state.window, &state.renderer))
+ {
+ SDL_LogError(SDL_LOG_CATEGORY_ERROR,
+ "SDL_CreateWindowAndRenderer failed: %s",
+ SDL_GetError());
+ do_exit(1, &state);
+ }
+
+ SDL_SetHintWithPriority(SDL_HINT_RENDER_VSYNC, "1", SDL_HINT_OVERRIDE);
+ SDL_SetRenderLogicalPresentation(state.renderer, DEFAULT_WIDTH,
+ DEFAULT_HEIGHT, SDL_LOGICAL_PRESENTATION_LETTERBOX);
+
+ calculate_display_size(&state);
+
+ state.grid = malloc(sizeof(struct Cell) * GRID_WIDTH * GRID_HEIGHT + 1);
+ if (!state.grid)
+ {
+ SDL_LogError(SDL_LOG_CATEGORY_ERROR, "calloc failed");
+ do_exit(1, &state);
+ }
+ for (y = 0; y < GRID_HEIGHT; y++)
+ for (x = 0; x < GRID_WIDTH; x++)
+ {
+ c = &state.grid[INDEX(x, y)];
+ coords.x = x;
+ coords.y = y;
+ init_cell(c, &coords);
+ if (x > 0)
+ c->left = &state.grid[INDEX(x - 1, y)];
+ if (y > 0)
+ c->up = &state.grid[INDEX(x, y - 1)];
+ if (x < GRID_WIDTH - 1)
+ c->right = &state.grid[INDEX(x + 1, y)];
+ if (y < GRID_HEIGHT - 1)
+ c->down = &state.grid[INDEX(x, y + 1)];
+ }
+
+ /*grid.width = GRID_WIDTH;
+ grid.height = GRID_HEIGHT;
+ grid.cells = (char**)calloc(GRID_HEIGHT, sizeof(char*));
+ if (!grid.cells)
+ {
+ SDL_LogError(SDL_LOG_CATEGORY_ERROR, "calloc failed");
+ exit(1);
+ }
+ for (y = 0; y < GRID_HEIGHT; y++)
+ {
+ grid.cells[y] = (char*)calloc(GRID_WIDTH, 1);
+ if (!grid.cells[y])
+ {
+ SDL_LogError(SDL_LOG_CATEGORY_ERROR, "calloc failed");
+ exit(1);
+ }
+ }*/
+
+ if (load_textures(&state) < 0)
+ do_exit(1, &state);
+
+ state.location_stack
+ = (SDL_Point*)calloc(LOCATION_STACK_MAX, sizeof(SDL_Point));
+ state.animation.active = 0;
+
+ SDL_GetMouseState(&px, &py);
+ state.pointer.x = px;
+ state.pointer.y = py;
+
+ last_time = SDL_GetTicks();
+ clock_getcpuclockid(getpid(), &cid);
+ clock_gettime(cid, &now);
+ srandom(now.tv_sec);
+
+ state.selection_start.x = -1;
+ state.selection_start.y = -1;
+ state.selection_end.x = -1;
+ state.selection_end.y = -1;
+
+ fill_triplet(&state);
+ while (state.running)
+ {
+ current_time = SDL_GetTicks();
+ if (state.animation.active)
+ {
+ if (current_time > last_time + 1000 / 60)
+ {
+ draw(&state);
+ step_animation(&state);
+ last_time = current_time;
+ }
+ }
+ else
+ {
+ if (state.redraw)
+ {
+ draw(&state);
+ state.redraw = 0;
+ }
+ }
+
+ while (SDL_PollEvent(&event))
+ handle_event(&state, &event);
+ }
+
+ return 0;
+}
diff --git a/local.h.in b/local.h.in
@@ -0,0 +1,7 @@
+/* This program is licensed under the terms of GNU GPL v3 or (at your option)
+ * any later version. Copyright (C) 2025 Страхиња Радић.
+ * See the file LICENSE for exact copyright and license details. */
+
+#define DATADIR "%DATADIR%"
+#define TER12_PNG "ter12.png"
+#define SPRITES_PNG "sprites.png"
diff --git a/owner b/owner
@@ -0,0 +1 @@
+Страхиња Радић
diff --git a/sprites.png b/sprites.png
Бинарне датотеке �е разликују.
diff --git a/sprites.xcf.xz b/sprites.xcf.xz
Бинарне датотеке �е разликују.
diff --git a/tags b/tags
@@ -0,0 +1,676 @@
+!_TAG_EXTRA_DESCRIPTION anonymous /Include tags for non-named objects like lambda/
+!_TAG_EXTRA_DESCRIPTION fileScope /Include tags of file scope/
+!_TAG_EXTRA_DESCRIPTION pseudo /Include pseudo tags/
+!_TAG_EXTRA_DESCRIPTION subparser /Include tags generated by subparsers/
+!_TAG_FIELD_DESCRIPTION epoch /the last modified time of the input file (only for F\/file kind tag)/
+!_TAG_FIELD_DESCRIPTION file /File-restricted scoping/
+!_TAG_FIELD_DESCRIPTION input /input file/
+!_TAG_FIELD_DESCRIPTION name /tag name/
+!_TAG_FIELD_DESCRIPTION pattern /pattern/
+!_TAG_FIELD_DESCRIPTION typeref /Type and name of a variable or typedef/
+!_TAG_FIELD_DESCRIPTION!C++ name /aliased names/
+!_TAG_FILE_FORMAT 2 /extended format; --format=1 will not append ;" to lines/
+!_TAG_FILE_SORTED 1 /0=unsorted, 1=sorted, 2=foldcase/
+!_TAG_KIND_DESCRIPTION!C d,macro /macro definitions/
+!_TAG_KIND_DESCRIPTION!C e,enumerator /enumerators (values inside an enumeration)/
+!_TAG_KIND_DESCRIPTION!C f,function /function definitions/
+!_TAG_KIND_DESCRIPTION!C g,enum /enumeration names/
+!_TAG_KIND_DESCRIPTION!C h,header /included header files/
+!_TAG_KIND_DESCRIPTION!C m,member /struct, and union members/
+!_TAG_KIND_DESCRIPTION!C s,struct /structure names/
+!_TAG_KIND_DESCRIPTION!C t,typedef /typedefs/
+!_TAG_KIND_DESCRIPTION!C u,union /union names/
+!_TAG_KIND_DESCRIPTION!C v,variable /variable definitions/
+!_TAG_KIND_DESCRIPTION!C++ c,class /classes/
+!_TAG_KIND_DESCRIPTION!C++ d,macro /macro definitions/
+!_TAG_KIND_DESCRIPTION!C++ e,enumerator /enumerators (values inside an enumeration)/
+!_TAG_KIND_DESCRIPTION!C++ f,function /function definitions/
+!_TAG_KIND_DESCRIPTION!C++ g,enum /enumeration names/
+!_TAG_KIND_DESCRIPTION!C++ h,header /included header files/
+!_TAG_KIND_DESCRIPTION!C++ m,member /class, struct, and union members/
+!_TAG_KIND_DESCRIPTION!C++ n,namespace /namespaces/
+!_TAG_KIND_DESCRIPTION!C++ s,struct /structure names/
+!_TAG_KIND_DESCRIPTION!C++ t,typedef /typedefs/
+!_TAG_KIND_DESCRIPTION!C++ u,union /union names/
+!_TAG_KIND_DESCRIPTION!C++ v,variable /variable definitions/
+!_TAG_OUTPUT_EXCMD mixed /number, pattern, mixed, or combineV2/
+!_TAG_OUTPUT_FILESEP slash /slash or backslash/
+!_TAG_OUTPUT_MODE u-ctags /u-ctags or e-ctags/
+!_TAG_OUTPUT_VERSION 0.0 /current.age/
+!_TAG_PARSER_VERSION!C 1.1 /current.age/
+!_TAG_PARSER_VERSION!C++ 1.1 /current.age/
+!_TAG_PATTERN_LENGTH_LIMIT 96 /0 for no limit/
+!_TAG_PROC_CWD /home/strajder/src/linije/ //
+!_TAG_PROGRAM_AUTHOR Universal Ctags Team //
+!_TAG_PROGRAM_NAME Universal Ctags /Derived from Exuberant Ctags/
+!_TAG_PROGRAM_URL https://ctags.io/ /official site/
+!_TAG_PROGRAM_VERSION 6.1.0 //
+!_TAG_ROLE_DESCRIPTION!C!function foreigndecl /declared in foreign languages/
+!_TAG_ROLE_DESCRIPTION!C!header local /local header/
+!_TAG_ROLE_DESCRIPTION!C!header system /system header/
+!_TAG_ROLE_DESCRIPTION!C!macro undef /undefined/
+!_TAG_ROLE_DESCRIPTION!C!struct foreigndecl /declared in foreign languages/
+!_TAG_ROLE_DESCRIPTION!C++!header local /local header/
+!_TAG_ROLE_DESCRIPTION!C++!header system /system header/
+!_TAG_ROLE_DESCRIPTION!C++!macro undef /undefined/
+ANIM_SPEED /home/strajder/src/lav-sdl/lav-sdl.c /^#define ANIM_SPEED /;" d file:
+ANIM_SPEED /home/strajder/src/linije/linije.c /^#define ANIM_SPEED /;" d file:
+ANIM_STEPS /home/strajder/src/lav-sdl/lav-sdl.c /^#define ANIM_STEPS /;" d file:
+ANIM_STEPS /home/strajder/src/linije/linije.c /^#define ANIM_STEPS /;" d file:
+AnimationState /home/strajder/src/lav-sdl/lav-sdl.c /^struct AnimationState {$/;" s file:
+AnimationState /home/strajder/src/linije/linije.c /^struct AnimationState {$/;" s file:
+BUFSIZE /home/strajder/src/lav-sdl/lav-sdl.c /^#define BUFSIZE /;" d file:
+BUFSIZE /home/strajder/src/linije/linije.c /^#define BUFSIZE /;" d file:
+CELL_BLUE /home/strajder/src/linije/linije.c /^ CELL_BLUE,$/;" e enum:__anonf7ed0ac70103 file:
+CELL_BLUE /home/strajder/src/linije/linije.c /^ CELL_BLUE,$/;" e enum:__anonf7ed0ac70303 file:
+CELL_EMPTY /home/strajder/src/lav-sdl/lav-sdl.c /^ CELL_EMPTY,$/;" e enum:__anona07934b70103 file:
+CELL_EMPTY /home/strajder/src/linije/linije.c /^ CELL_EMPTY,$/;" e enum:__anonf7ed0ac70103 file:
+CELL_EMPTY /home/strajder/src/linije/linije.c /^ CELL_EMPTY,$/;" e enum:__anonf7ed0ac70303 file:
+CELL_EMPTY /home/strajder/tmp/pathfind/pf2.c /^enum { CELL_EMPTY, CELL_FULL, CELL_START, CELL_END, CELL_PATH };$/;" e enum:__anonbf6a67100103 file:
+CELL_END /home/strajder/src/lav-sdl/lav-sdl.c /^ CELL_END$/;" e enum:__anona07934b70103 file:
+CELL_END /home/strajder/src/linije/linije.c /^ CELL_END$/;" e enum:__anonf7ed0ac70103 file:
+CELL_END /home/strajder/src/linije/linije.c /^#define CELL_END /;" d file:
+CELL_END /home/strajder/tmp/pathfind/pf2.c /^enum { CELL_EMPTY, CELL_FULL, CELL_START, CELL_END, CELL_PATH };$/;" e enum:__anonbf6a67100103 file:
+CELL_FAIL /home/strajder/src/lav-sdl/lav-sdl.c /^ CELL_FAIL,$/;" e enum:__anona07934b70103 file:
+CELL_FAIL /home/strajder/src/linije/linije.c /^ CELL_FAIL,$/;" e enum:__anonf7ed0ac70103 file:
+CELL_FULL /home/strajder/tmp/pathfind/pf2.c /^enum { CELL_EMPTY, CELL_FULL, CELL_START, CELL_END, CELL_PATH };$/;" e enum:__anonbf6a67100103 file:
+CELL_GREEN /home/strajder/src/linije/linije.c /^ CELL_GREEN,$/;" e enum:__anonf7ed0ac70103 file:
+CELL_GREEN /home/strajder/src/linije/linije.c /^ CELL_GREEN,$/;" e enum:__anonf7ed0ac70303 file:
+CELL_OK /home/strajder/src/lav-sdl/lav-sdl.c /^ CELL_OK,$/;" e enum:__anona07934b70103 file:
+CELL_OK /home/strajder/src/linije/linije.c /^ CELL_OK,$/;" e enum:__anonf7ed0ac70103 file:
+CELL_ORANGE /home/strajder/src/linije/linije.c /^ CELL_ORANGE$/;" e enum:__anonf7ed0ac70103 file:
+CELL_ORANGE /home/strajder/src/linije/linije.c /^ CELL_ORANGE$/;" e enum:__anonf7ed0ac70303 file:
+CELL_ORANGE /home/strajder/src/linije/linije.c /^ CELL_ORANGE,$/;" e enum:__anonf7ed0ac70103 file:
+CELL_ORANGE /home/strajder/src/linije/linije.c /^ CELL_ORANGE,$/;" e enum:__anonf7ed0ac70303 file:
+CELL_PATH /home/strajder/src/linije/linije.c /^#define CELL_PATH /;" d file:
+CELL_PATH /home/strajder/tmp/pathfind/pf2.c /^enum { CELL_EMPTY, CELL_FULL, CELL_START, CELL_END, CELL_PATH };$/;" e enum:__anonbf6a67100103 file:
+CELL_PURPLE /home/strajder/src/linije/linije.c /^ CELL_PURPLE,$/;" e enum:__anonf7ed0ac70103 file:
+CELL_PURPLE /home/strajder/src/linije/linije.c /^ CELL_PURPLE,$/;" e enum:__anonf7ed0ac70303 file:
+CELL_RED /home/strajder/src/linije/linije.c /^ CELL_RED,$/;" e enum:__anonf7ed0ac70103 file:
+CELL_RED /home/strajder/src/linije/linije.c /^ CELL_RED,$/;" e enum:__anonf7ed0ac70303 file:
+CELL_SELECTED /home/strajder/src/linije/linije.c /^ CELL_SELECTED$/;" e enum:__anonf7ed0ac70103 file:
+CELL_SELECTED /home/strajder/src/linije/linije.c /^ CELL_SELECTED$/;" e enum:__anonf7ed0ac70303 file:
+CELL_SIZE /home/strajder/src/lav-sdl/lav-sdl.c /^#define CELL_SIZE /;" d file:
+CELL_SIZE /home/strajder/src/linije/linije.c /^#define CELL_SIZE /;" d file:
+CELL_START /home/strajder/src/lav-sdl/lav-sdl.c /^ CELL_START,$/;" e enum:__anona07934b70103 file:
+CELL_START /home/strajder/src/linije/linije.c /^ CELL_START,$/;" e enum:__anonf7ed0ac70103 file:
+CELL_START /home/strajder/src/linije/linije.c /^#define CELL_START /;" d file:
+CELL_START /home/strajder/tmp/pathfind/pf2.c /^enum { CELL_EMPTY, CELL_FULL, CELL_START, CELL_END, CELL_PATH };$/;" e enum:__anonbf6a67100103 file:
+CELL_WALL /home/strajder/src/lav-sdl/lav-sdl.c /^ CELL_WALL,$/;" e enum:__anona07934b70103 file:
+CELL_WALL /home/strajder/src/linije/linije.c /^ CELL_WALL,$/;" e enum:__anonf7ed0ac70103 file:
+Cell /home/strajder/src/linije/linije.c /^struct Cell {$/;" s file:
+Cell /home/strajder/tmp/pathfind/pf2.c /^struct Cell {$/;" s file:
+Coord /home/strajder/src/linije/linije.c /^struct Coord {$/;" s file:
+Coord /home/strajder/tmp/pathfind/pf2.c /^struct Coord {$/;" s file:
+DEFAULT_HEIGHT /home/strajder/src/lav-sdl/lav-sdl.c /^#define DEFAULT_HEIGHT /;" d file:
+DEFAULT_HEIGHT /home/strajder/src/linije/linije.c /^#define DEFAULT_HEIGHT /;" d file:
+DEFAULT_WIDTH /home/strajder/src/lav-sdl/lav-sdl.c /^#define DEFAULT_WIDTH /;" d file:
+DEFAULT_WIDTH /home/strajder/src/linije/linije.c /^#define DEFAULT_WIDTH /;" d file:
+FPS /home/strajder/src/lav-sdl/lav-sdl.c /^#define FPS /;" d file:
+FPS /home/strajder/src/linije/linije.c /^#define FPS /;" d file:
+GRID_HEIGHT /home/strajder/src/linije/linije.c /^#define GRID_HEIGHT /;" d file:
+GRID_WIDTH /home/strajder/src/linije/linije.c /^#define GRID_WIDTH /;" d file:
+Grid /home/strajder/src/linije/linije.c /^struct Grid {$/;" s file:
+H /home/strajder/tmp/pathfind/pf2.c /^#define H /;" d file:
+HELP_DIALOG_HEIGHT /home/strajder/src/lav-sdl/lav-sdl.c /^#define HELP_DIALOG_HEIGHT /;" d file:
+HELP_DIALOG_HEIGHT /home/strajder/src/linije/linije.c /^#define HELP_DIALOG_HEIGHT /;" d file:
+HELP_DIALOG_WIDTH /home/strajder/src/lav-sdl/lav-sdl.c /^#define HELP_DIALOG_WIDTH /;" d file:
+HELP_DIALOG_WIDTH /home/strajder/src/linije/linije.c /^#define HELP_DIALOG_WIDTH /;" d file:
+INDEX /home/strajder/src/linije/linije.c /^#define INDEX(/;" d file:
+INDEX /home/strajder/tmp/pathfind/pf2.c /^#define INDEX(/;" d file:
+INDEXFI /home/strajder/src/linije/linije.c /^#define INDEXFI(/;" d file:
+LABYRINTH_MAXHEIGHT /home/strajder/src/lav-sdl/lav-sdl.c /^#define LABYRINTH_MAXHEIGHT /;" d file:
+LABYRINTH_MAXHEIGHT /home/strajder/src/linije/linije.c /^#define LABYRINTH_MAXHEIGHT /;" d file:
+LABYRINTH_MAXWIDTH /home/strajder/src/lav-sdl/lav-sdl.c /^#define LABYRINTH_MAXWIDTH /;" d file:
+LABYRINTH_MAXWIDTH /home/strajder/src/linije/linije.c /^#define LABYRINTH_MAXWIDTH /;" d file:
+LOCATION_STACK_MAX /home/strajder/src/lav-sdl/lav-sdl.c /^#define LOCATION_STACK_MAX /;" d file:
+LOCATION_STACK_MAX /home/strajder/src/linije/linije.c /^#define LOCATION_STACK_MAX /;" d file:
+Labyrinth /home/strajder/src/lav-sdl/lav-sdl.c /^struct Labyrinth {$/;" s file:
+Labyrinth /home/strajder/src/linije/linije.c /^struct Labyrinth {$/;" s file:
+MAX /home/strajder/src/lav-sdl/lav-sdl.c /^#define MAX(/;" d file:
+MAX /home/strajder/src/linije/linije.c /^#define MAX(/;" d file:
+MIN /home/strajder/src/lav-sdl/lav-sdl.c /^#define MIN(/;" d file:
+MIN /home/strajder/src/linije/linije.c /^#define MIN(/;" d file:
+MIN_POP_LEN /home/strajder/src/linije/linije.c /^#define MIN_POP_LEN /;" d file:
+MIN_POP_LEN /home/strajder/src/linije/linije.c /^#define MIN_POP_LEN /;" d file:
+POP_STRING_CELL_VALUE /home/strajder/src/linije/linije.c /^#define POP_STRING_CELL_VALUE /;" d file:
+PRINT_BUFSIZE /home/strajder/src/lav-sdl/lav-sdl.c /^#define PRINT_BUFSIZE /;" d file:
+PRINT_BUFSIZE /home/strajder/src/linije/linije.c /^#define PRINT_BUFSIZE /;" d file:
+PRINT_BUFSIZE /home/strajder/src/linije/linije.c /^#define PRINT_BUFSIZE /;" d file:
+PROGNAME /home/strajder/src/lav-sdl/lav-sdl.c /^#define PROGNAME /;" d file:
+PROGNAME /home/strajder/src/linije/linije.c /^#define PROGNAME /;" d file:
+PROGNAME /home/strajder/src/linije/linije.c /^#define PROGNAME /;" d file:
+SDL_DEBUG_TEXT_FONT_CHARACTER_SIZE /usr/local/include/SDL3/SDL_render.h /^#define SDL_DEBUG_TEXT_FONT_CHARACTER_SIZE /;" d
+SDL_GPURenderState /usr/local/include/SDL3/SDL_render.h /^typedef struct SDL_GPURenderState SDL_GPURenderState;$/;" t typeref:struct:SDL_GPURenderState
+SDL_GPURenderStateDesc /usr/local/include/SDL3/SDL_render.h /^typedef struct SDL_GPURenderStateDesc$/;" s
+SDL_GPURenderStateDesc /usr/local/include/SDL3/SDL_render.h /^} SDL_GPURenderStateDesc;$/;" t typeref:struct:SDL_GPURenderStateDesc
+SDL_LOGICAL_PRESENTATION_DISABLED /usr/local/include/SDL3/SDL_render.h /^ SDL_LOGICAL_PRESENTATION_DISABLED, \/**< There is no logical size in effect *\/$/;" e enum:SDL_RendererLogicalPresentation
+SDL_LOGICAL_PRESENTATION_INTEGER_SCALE /usr/local/include/SDL3/SDL_render.h /^ SDL_LOGICAL_PRESENTATION_INTEGER_SCALE \/**< The rendered content is scaled up by integer /;" e enum:SDL_RendererLogicalPresentation
+SDL_LOGICAL_PRESENTATION_LETTERBOX /usr/local/include/SDL3/SDL_render.h /^ SDL_LOGICAL_PRESENTATION_LETTERBOX, \/**< The rendered content is fit to the largest dimensi/;" e enum:SDL_RendererLogicalPresentation
+SDL_LOGICAL_PRESENTATION_OVERSCAN /usr/local/include/SDL3/SDL_render.h /^ SDL_LOGICAL_PRESENTATION_OVERSCAN, \/**< The rendered content is fit to the smallest dimens/;" e enum:SDL_RendererLogicalPresentation
+SDL_LOGICAL_PRESENTATION_STRETCH /usr/local/include/SDL3/SDL_render.h /^ SDL_LOGICAL_PRESENTATION_STRETCH, \/**< The rendered content is stretched to the output re/;" e enum:SDL_RendererLogicalPresentation
+SDL_LogDebug /home/strajder/src/linije/linije.c /^SDL_LogDebug(const char* fmt, ...)$/;" f typeref:typename:void
+SDL_LogError /home/strajder/src/linije/linije.c /^SDL_LogError(const char* fmt, ...)$/;" f typeref:typename:void
+SDL_PROP_RENDERER_CREATE_GPU_SHADERS_DXIL_BOOLEAN /usr/local/include/SDL3/SDL_render.h /^#define SDL_PROP_RENDERER_CREATE_GPU_SHADERS_DXIL_BOOLEAN /;" d
+SDL_PROP_RENDERER_CREATE_GPU_SHADERS_MSL_BOOLEAN /usr/local/include/SDL3/SDL_render.h /^#define SDL_PROP_RENDERER_CREATE_GPU_SHADERS_MSL_BOOLEAN /;" d
+SDL_PROP_RENDERER_CREATE_GPU_SHADERS_SPIRV_BOOLEAN /usr/local/include/SDL3/SDL_render.h /^#define SDL_PROP_RENDERER_CREATE_GPU_SHADERS_SPIRV_BOOLEAN /;" d
+SDL_PROP_RENDERER_CREATE_NAME_STRING /usr/local/include/SDL3/SDL_render.h /^#define SDL_PROP_RENDERER_CREATE_NAME_STRING /;" d
+SDL_PROP_RENDERER_CREATE_OUTPUT_COLORSPACE_NUMBER /usr/local/include/SDL3/SDL_render.h /^#define SDL_PROP_RENDERER_CREATE_OUTPUT_COLORSPACE_NUMBER /;" d
+SDL_PROP_RENDERER_CREATE_PRESENT_VSYNC_NUMBER /usr/local/include/SDL3/SDL_render.h /^#define SDL_PROP_RENDERER_CREATE_PRESENT_VSYNC_NUMBER /;" d
+SDL_PROP_RENDERER_CREATE_SURFACE_POINTER /usr/local/include/SDL3/SDL_render.h /^#define SDL_PROP_RENDERER_CREATE_SURFACE_POINTER /;" d
+SDL_PROP_RENDERER_CREATE_VULKAN_DEVICE_POINTER /usr/local/include/SDL3/SDL_render.h /^#define SDL_PROP_RENDERER_CREATE_VULKAN_DEVICE_POINTER /;" d
+SDL_PROP_RENDERER_CREATE_VULKAN_GRAPHICS_QUEUE_FAMILY_INDEX_NUMBER /usr/local/include/SDL3/SDL_render.h /^#define SDL_PROP_RENDERER_CREATE_VULKAN_GRAPHICS_QUEUE_FAMILY_INDEX_NUMBER /;" d
+SDL_PROP_RENDERER_CREATE_VULKAN_INSTANCE_POINTER /usr/local/include/SDL3/SDL_render.h /^#define SDL_PROP_RENDERER_CREATE_VULKAN_INSTANCE_POINTER /;" d
+SDL_PROP_RENDERER_CREATE_VULKAN_PHYSICAL_DEVICE_POINTER /usr/local/include/SDL3/SDL_render.h /^#define SDL_PROP_RENDERER_CREATE_VULKAN_PHYSICAL_DEVICE_POINTER /;" d
+SDL_PROP_RENDERER_CREATE_VULKAN_PRESENT_QUEUE_FAMILY_INDEX_NUMBER /usr/local/include/SDL3/SDL_render.h /^#define SDL_PROP_RENDERER_CREATE_VULKAN_PRESENT_QUEUE_FAMILY_INDEX_NUMBER /;" d
+SDL_PROP_RENDERER_CREATE_VULKAN_SURFACE_NUMBER /usr/local/include/SDL3/SDL_render.h /^#define SDL_PROP_RENDERER_CREATE_VULKAN_SURFACE_NUMBER /;" d
+SDL_PROP_RENDERER_CREATE_WINDOW_POINTER /usr/local/include/SDL3/SDL_render.h /^#define SDL_PROP_RENDERER_CREATE_WINDOW_POINTER /;" d
+SDL_PROP_RENDERER_D3D11_DEVICE_POINTER /usr/local/include/SDL3/SDL_render.h /^#define SDL_PROP_RENDERER_D3D11_DEVICE_POINTER /;" d
+SDL_PROP_RENDERER_D3D11_SWAPCHAIN_POINTER /usr/local/include/SDL3/SDL_render.h /^#define SDL_PROP_RENDERER_D3D11_SWAPCHAIN_POINTER /;" d
+SDL_PROP_RENDERER_D3D12_COMMAND_QUEUE_POINTER /usr/local/include/SDL3/SDL_render.h /^#define SDL_PROP_RENDERER_D3D12_COMMAND_QUEUE_POINTER /;" d
+SDL_PROP_RENDERER_D3D12_DEVICE_POINTER /usr/local/include/SDL3/SDL_render.h /^#define SDL_PROP_RENDERER_D3D12_DEVICE_POINTER /;" d
+SDL_PROP_RENDERER_D3D12_SWAPCHAIN_POINTER /usr/local/include/SDL3/SDL_render.h /^#define SDL_PROP_RENDERER_D3D12_SWAPCHAIN_POINTER /;" d
+SDL_PROP_RENDERER_D3D9_DEVICE_POINTER /usr/local/include/SDL3/SDL_render.h /^#define SDL_PROP_RENDERER_D3D9_DEVICE_POINTER /;" d
+SDL_PROP_RENDERER_GPU_DEVICE_POINTER /usr/local/include/SDL3/SDL_render.h /^#define SDL_PROP_RENDERER_GPU_DEVICE_POINTER /;" d
+SDL_PROP_RENDERER_HDR_ENABLED_BOOLEAN /usr/local/include/SDL3/SDL_render.h /^#define SDL_PROP_RENDERER_HDR_ENABLED_BOOLEAN /;" d
+SDL_PROP_RENDERER_HDR_HEADROOM_FLOAT /usr/local/include/SDL3/SDL_render.h /^#define SDL_PROP_RENDERER_HDR_HEADROOM_FLOAT /;" d
+SDL_PROP_RENDERER_MAX_TEXTURE_SIZE_NUMBER /usr/local/include/SDL3/SDL_render.h /^#define SDL_PROP_RENDERER_MAX_TEXTURE_SIZE_NUMBER /;" d
+SDL_PROP_RENDERER_NAME_STRING /usr/local/include/SDL3/SDL_render.h /^#define SDL_PROP_RENDERER_NAME_STRING /;" d
+SDL_PROP_RENDERER_OUTPUT_COLORSPACE_NUMBER /usr/local/include/SDL3/SDL_render.h /^#define SDL_PROP_RENDERER_OUTPUT_COLORSPACE_NUMBER /;" d
+SDL_PROP_RENDERER_SDR_WHITE_POINT_FLOAT /usr/local/include/SDL3/SDL_render.h /^#define SDL_PROP_RENDERER_SDR_WHITE_POINT_FLOAT /;" d
+SDL_PROP_RENDERER_SURFACE_POINTER /usr/local/include/SDL3/SDL_render.h /^#define SDL_PROP_RENDERER_SURFACE_POINTER /;" d
+SDL_PROP_RENDERER_TEXTURE_FORMATS_POINTER /usr/local/include/SDL3/SDL_render.h /^#define SDL_PROP_RENDERER_TEXTURE_FORMATS_POINTER /;" d
+SDL_PROP_RENDERER_VSYNC_NUMBER /usr/local/include/SDL3/SDL_render.h /^#define SDL_PROP_RENDERER_VSYNC_NUMBER /;" d
+SDL_PROP_RENDERER_VULKAN_DEVICE_POINTER /usr/local/include/SDL3/SDL_render.h /^#define SDL_PROP_RENDERER_VULKAN_DEVICE_POINTER /;" d
+SDL_PROP_RENDERER_VULKAN_GRAPHICS_QUEUE_FAMILY_INDEX_NUMBER /usr/local/include/SDL3/SDL_render.h /^#define SDL_PROP_RENDERER_VULKAN_GRAPHICS_QUEUE_FAMILY_INDEX_NUMBER /;" d
+SDL_PROP_RENDERER_VULKAN_INSTANCE_POINTER /usr/local/include/SDL3/SDL_render.h /^#define SDL_PROP_RENDERER_VULKAN_INSTANCE_POINTER /;" d
+SDL_PROP_RENDERER_VULKAN_PHYSICAL_DEVICE_POINTER /usr/local/include/SDL3/SDL_render.h /^#define SDL_PROP_RENDERER_VULKAN_PHYSICAL_DEVICE_POINTER /;" d
+SDL_PROP_RENDERER_VULKAN_PRESENT_QUEUE_FAMILY_INDEX_NUMBER /usr/local/include/SDL3/SDL_render.h /^#define SDL_PROP_RENDERER_VULKAN_PRESENT_QUEUE_FAMILY_INDEX_NUMBER /;" d
+SDL_PROP_RENDERER_VULKAN_SURFACE_NUMBER /usr/local/include/SDL3/SDL_render.h /^#define SDL_PROP_RENDERER_VULKAN_SURFACE_NUMBER /;" d
+SDL_PROP_RENDERER_VULKAN_SWAPCHAIN_IMAGE_COUNT_NUMBER /usr/local/include/SDL3/SDL_render.h /^#define SDL_PROP_RENDERER_VULKAN_SWAPCHAIN_IMAGE_COUNT_NUMBER /;" d
+SDL_PROP_RENDERER_WINDOW_POINTER /usr/local/include/SDL3/SDL_render.h /^#define SDL_PROP_RENDERER_WINDOW_POINTER /;" d
+SDL_PROP_TEXTURE_ACCESS_NUMBER /usr/local/include/SDL3/SDL_render.h /^#define SDL_PROP_TEXTURE_ACCESS_NUMBER /;" d
+SDL_PROP_TEXTURE_COLORSPACE_NUMBER /usr/local/include/SDL3/SDL_render.h /^#define SDL_PROP_TEXTURE_COLORSPACE_NUMBER /;" d
+SDL_PROP_TEXTURE_CREATE_ACCESS_NUMBER /usr/local/include/SDL3/SDL_render.h /^#define SDL_PROP_TEXTURE_CREATE_ACCESS_NUMBER /;" d
+SDL_PROP_TEXTURE_CREATE_COLORSPACE_NUMBER /usr/local/include/SDL3/SDL_render.h /^#define SDL_PROP_TEXTURE_CREATE_COLORSPACE_NUMBER /;" d
+SDL_PROP_TEXTURE_CREATE_D3D11_TEXTURE_POINTER /usr/local/include/SDL3/SDL_render.h /^#define SDL_PROP_TEXTURE_CREATE_D3D11_TEXTURE_POINTER /;" d
+SDL_PROP_TEXTURE_CREATE_D3D11_TEXTURE_U_POINTER /usr/local/include/SDL3/SDL_render.h /^#define SDL_PROP_TEXTURE_CREATE_D3D11_TEXTURE_U_POINTER /;" d
+SDL_PROP_TEXTURE_CREATE_D3D11_TEXTURE_V_POINTER /usr/local/include/SDL3/SDL_render.h /^#define SDL_PROP_TEXTURE_CREATE_D3D11_TEXTURE_V_POINTER /;" d
+SDL_PROP_TEXTURE_CREATE_D3D12_TEXTURE_POINTER /usr/local/include/SDL3/SDL_render.h /^#define SDL_PROP_TEXTURE_CREATE_D3D12_TEXTURE_POINTER /;" d
+SDL_PROP_TEXTURE_CREATE_D3D12_TEXTURE_U_POINTER /usr/local/include/SDL3/SDL_render.h /^#define SDL_PROP_TEXTURE_CREATE_D3D12_TEXTURE_U_POINTER /;" d
+SDL_PROP_TEXTURE_CREATE_D3D12_TEXTURE_V_POINTER /usr/local/include/SDL3/SDL_render.h /^#define SDL_PROP_TEXTURE_CREATE_D3D12_TEXTURE_V_POINTER /;" d
+SDL_PROP_TEXTURE_CREATE_FORMAT_NUMBER /usr/local/include/SDL3/SDL_render.h /^#define SDL_PROP_TEXTURE_CREATE_FORMAT_NUMBER /;" d
+SDL_PROP_TEXTURE_CREATE_HDR_HEADROOM_FLOAT /usr/local/include/SDL3/SDL_render.h /^#define SDL_PROP_TEXTURE_CREATE_HDR_HEADROOM_FLOAT /;" d
+SDL_PROP_TEXTURE_CREATE_HEIGHT_NUMBER /usr/local/include/SDL3/SDL_render.h /^#define SDL_PROP_TEXTURE_CREATE_HEIGHT_NUMBER /;" d
+SDL_PROP_TEXTURE_CREATE_METAL_PIXELBUFFER_POINTER /usr/local/include/SDL3/SDL_render.h /^#define SDL_PROP_TEXTURE_CREATE_METAL_PIXELBUFFER_POINTER /;" d
+SDL_PROP_TEXTURE_CREATE_OPENGLES2_TEXTURE_NUMBER /usr/local/include/SDL3/SDL_render.h /^#define SDL_PROP_TEXTURE_CREATE_OPENGLES2_TEXTURE_NUMBER /;" d
+SDL_PROP_TEXTURE_CREATE_OPENGLES2_TEXTURE_UV_NUMBER /usr/local/include/SDL3/SDL_render.h /^#define SDL_PROP_TEXTURE_CREATE_OPENGLES2_TEXTURE_UV_NUMBER /;" d
+SDL_PROP_TEXTURE_CREATE_OPENGLES2_TEXTURE_U_NUMBER /usr/local/include/SDL3/SDL_render.h /^#define SDL_PROP_TEXTURE_CREATE_OPENGLES2_TEXTURE_U_NUMBER /;" d
+SDL_PROP_TEXTURE_CREATE_OPENGLES2_TEXTURE_V_NUMBER /usr/local/include/SDL3/SDL_render.h /^#define SDL_PROP_TEXTURE_CREATE_OPENGLES2_TEXTURE_V_NUMBER /;" d
+SDL_PROP_TEXTURE_CREATE_OPENGL_TEXTURE_NUMBER /usr/local/include/SDL3/SDL_render.h /^#define SDL_PROP_TEXTURE_CREATE_OPENGL_TEXTURE_NUMBER /;" d
+SDL_PROP_TEXTURE_CREATE_OPENGL_TEXTURE_UV_NUMBER /usr/local/include/SDL3/SDL_render.h /^#define SDL_PROP_TEXTURE_CREATE_OPENGL_TEXTURE_UV_NUMBER /;" d
+SDL_PROP_TEXTURE_CREATE_OPENGL_TEXTURE_U_NUMBER /usr/local/include/SDL3/SDL_render.h /^#define SDL_PROP_TEXTURE_CREATE_OPENGL_TEXTURE_U_NUMBER /;" d
+SDL_PROP_TEXTURE_CREATE_OPENGL_TEXTURE_V_NUMBER /usr/local/include/SDL3/SDL_render.h /^#define SDL_PROP_TEXTURE_CREATE_OPENGL_TEXTURE_V_NUMBER /;" d
+SDL_PROP_TEXTURE_CREATE_SDR_WHITE_POINT_FLOAT /usr/local/include/SDL3/SDL_render.h /^#define SDL_PROP_TEXTURE_CREATE_SDR_WHITE_POINT_FLOAT /;" d
+SDL_PROP_TEXTURE_CREATE_VULKAN_TEXTURE_NUMBER /usr/local/include/SDL3/SDL_render.h /^#define SDL_PROP_TEXTURE_CREATE_VULKAN_TEXTURE_NUMBER /;" d
+SDL_PROP_TEXTURE_CREATE_WIDTH_NUMBER /usr/local/include/SDL3/SDL_render.h /^#define SDL_PROP_TEXTURE_CREATE_WIDTH_NUMBER /;" d
+SDL_PROP_TEXTURE_D3D11_TEXTURE_POINTER /usr/local/include/SDL3/SDL_render.h /^#define SDL_PROP_TEXTURE_D3D11_TEXTURE_POINTER /;" d
+SDL_PROP_TEXTURE_D3D11_TEXTURE_U_POINTER /usr/local/include/SDL3/SDL_render.h /^#define SDL_PROP_TEXTURE_D3D11_TEXTURE_U_POINTER /;" d
+SDL_PROP_TEXTURE_D3D11_TEXTURE_V_POINTER /usr/local/include/SDL3/SDL_render.h /^#define SDL_PROP_TEXTURE_D3D11_TEXTURE_V_POINTER /;" d
+SDL_PROP_TEXTURE_D3D12_TEXTURE_POINTER /usr/local/include/SDL3/SDL_render.h /^#define SDL_PROP_TEXTURE_D3D12_TEXTURE_POINTER /;" d
+SDL_PROP_TEXTURE_D3D12_TEXTURE_U_POINTER /usr/local/include/SDL3/SDL_render.h /^#define SDL_PROP_TEXTURE_D3D12_TEXTURE_U_POINTER /;" d
+SDL_PROP_TEXTURE_D3D12_TEXTURE_V_POINTER /usr/local/include/SDL3/SDL_render.h /^#define SDL_PROP_TEXTURE_D3D12_TEXTURE_V_POINTER /;" d
+SDL_PROP_TEXTURE_FORMAT_NUMBER /usr/local/include/SDL3/SDL_render.h /^#define SDL_PROP_TEXTURE_FORMAT_NUMBER /;" d
+SDL_PROP_TEXTURE_HDR_HEADROOM_FLOAT /usr/local/include/SDL3/SDL_render.h /^#define SDL_PROP_TEXTURE_HDR_HEADROOM_FLOAT /;" d
+SDL_PROP_TEXTURE_HEIGHT_NUMBER /usr/local/include/SDL3/SDL_render.h /^#define SDL_PROP_TEXTURE_HEIGHT_NUMBER /;" d
+SDL_PROP_TEXTURE_OPENGLES2_TEXTURE_NUMBER /usr/local/include/SDL3/SDL_render.h /^#define SDL_PROP_TEXTURE_OPENGLES2_TEXTURE_NUMBER /;" d
+SDL_PROP_TEXTURE_OPENGLES2_TEXTURE_TARGET_NUMBER /usr/local/include/SDL3/SDL_render.h /^#define SDL_PROP_TEXTURE_OPENGLES2_TEXTURE_TARGET_NUMBER /;" d
+SDL_PROP_TEXTURE_OPENGLES2_TEXTURE_UV_NUMBER /usr/local/include/SDL3/SDL_render.h /^#define SDL_PROP_TEXTURE_OPENGLES2_TEXTURE_UV_NUMBER /;" d
+SDL_PROP_TEXTURE_OPENGLES2_TEXTURE_U_NUMBER /usr/local/include/SDL3/SDL_render.h /^#define SDL_PROP_TEXTURE_OPENGLES2_TEXTURE_U_NUMBER /;" d
+SDL_PROP_TEXTURE_OPENGLES2_TEXTURE_V_NUMBER /usr/local/include/SDL3/SDL_render.h /^#define SDL_PROP_TEXTURE_OPENGLES2_TEXTURE_V_NUMBER /;" d
+SDL_PROP_TEXTURE_OPENGL_TEXTURE_NUMBER /usr/local/include/SDL3/SDL_render.h /^#define SDL_PROP_TEXTURE_OPENGL_TEXTURE_NUMBER /;" d
+SDL_PROP_TEXTURE_OPENGL_TEXTURE_TARGET_NUMBER /usr/local/include/SDL3/SDL_render.h /^#define SDL_PROP_TEXTURE_OPENGL_TEXTURE_TARGET_NUMBER /;" d
+SDL_PROP_TEXTURE_OPENGL_TEXTURE_UV_NUMBER /usr/local/include/SDL3/SDL_render.h /^#define SDL_PROP_TEXTURE_OPENGL_TEXTURE_UV_NUMBER /;" d
+SDL_PROP_TEXTURE_OPENGL_TEXTURE_U_NUMBER /usr/local/include/SDL3/SDL_render.h /^#define SDL_PROP_TEXTURE_OPENGL_TEXTURE_U_NUMBER /;" d
+SDL_PROP_TEXTURE_OPENGL_TEXTURE_V_NUMBER /usr/local/include/SDL3/SDL_render.h /^#define SDL_PROP_TEXTURE_OPENGL_TEXTURE_V_NUMBER /;" d
+SDL_PROP_TEXTURE_OPENGL_TEX_H_FLOAT /usr/local/include/SDL3/SDL_render.h /^#define SDL_PROP_TEXTURE_OPENGL_TEX_H_FLOAT /;" d
+SDL_PROP_TEXTURE_OPENGL_TEX_W_FLOAT /usr/local/include/SDL3/SDL_render.h /^#define SDL_PROP_TEXTURE_OPENGL_TEX_W_FLOAT /;" d
+SDL_PROP_TEXTURE_SDR_WHITE_POINT_FLOAT /usr/local/include/SDL3/SDL_render.h /^#define SDL_PROP_TEXTURE_SDR_WHITE_POINT_FLOAT /;" d
+SDL_PROP_TEXTURE_VULKAN_TEXTURE_NUMBER /usr/local/include/SDL3/SDL_render.h /^#define SDL_PROP_TEXTURE_VULKAN_TEXTURE_NUMBER /;" d
+SDL_PROP_TEXTURE_WIDTH_NUMBER /usr/local/include/SDL3/SDL_render.h /^#define SDL_PROP_TEXTURE_WIDTH_NUMBER /;" d
+SDL_RENDERER_VSYNC_ADAPTIVE /usr/local/include/SDL3/SDL_render.h /^#define SDL_RENDERER_VSYNC_ADAPTIVE /;" d
+SDL_RENDERER_VSYNC_DISABLED /usr/local/include/SDL3/SDL_render.h /^#define SDL_RENDERER_VSYNC_DISABLED /;" d
+SDL_Renderer /usr/local/include/SDL3/SDL_render.h /^typedef struct SDL_Renderer SDL_Renderer;$/;" t typeref:struct:SDL_Renderer
+SDL_RendererLogicalPresentation /usr/local/include/SDL3/SDL_render.h /^typedef enum SDL_RendererLogicalPresentation$/;" g
+SDL_RendererLogicalPresentation /usr/local/include/SDL3/SDL_render.h /^} SDL_RendererLogicalPresentation;$/;" t typeref:enum:SDL_RendererLogicalPresentation
+SDL_SOFTWARE_RENDERER /usr/local/include/SDL3/SDL_render.h /^#define SDL_SOFTWARE_RENDERER /;" d
+SDL_TEXTUREACCESS_STATIC /usr/local/include/SDL3/SDL_render.h /^ SDL_TEXTUREACCESS_STATIC, \/**< Changes rarely, not lockable *\/$/;" e enum:SDL_TextureAccess
+SDL_TEXTUREACCESS_STREAMING /usr/local/include/SDL3/SDL_render.h /^ SDL_TEXTUREACCESS_STREAMING, \/**< Changes frequently, lockable *\/$/;" e enum:SDL_TextureAccess
+SDL_TEXTUREACCESS_TARGET /usr/local/include/SDL3/SDL_render.h /^ SDL_TEXTUREACCESS_TARGET \/**< Texture can be used as a render target *\/$/;" e enum:SDL_TextureAccess
+SDL_TEXTURE_ADDRESS_AUTO /usr/local/include/SDL3/SDL_render.h /^ SDL_TEXTURE_ADDRESS_AUTO, \/**< Wrapping is enabled if texture coordinates are outside [0,/;" e enum:SDL_TextureAddressMode
+SDL_TEXTURE_ADDRESS_CLAMP /usr/local/include/SDL3/SDL_render.h /^ SDL_TEXTURE_ADDRESS_CLAMP, \/**< Texture coordinates are clamped to the [0, 1] range *\/$/;" e enum:SDL_TextureAddressMode
+SDL_TEXTURE_ADDRESS_INVALID /usr/local/include/SDL3/SDL_render.h /^ SDL_TEXTURE_ADDRESS_INVALID = -1,$/;" e enum:SDL_TextureAddressMode
+SDL_TEXTURE_ADDRESS_WRAP /usr/local/include/SDL3/SDL_render.h /^ SDL_TEXTURE_ADDRESS_WRAP \/**< The texture is repeated (tiled) *\/$/;" e enum:SDL_TextureAddressMode
+SDL_Texture /usr/local/include/SDL3/SDL_render.h /^struct SDL_Texture$/;" s
+SDL_Texture /usr/local/include/SDL3/SDL_render.h /^typedef struct SDL_Texture SDL_Texture;$/;" t typeref:struct:SDL_Texture
+SDL_TextureAccess /usr/local/include/SDL3/SDL_render.h /^typedef enum SDL_TextureAccess$/;" g
+SDL_TextureAccess /usr/local/include/SDL3/SDL_render.h /^} SDL_TextureAccess;$/;" t typeref:enum:SDL_TextureAccess
+SDL_TextureAddressMode /usr/local/include/SDL3/SDL_render.h /^typedef enum SDL_TextureAddressMode$/;" g
+SDL_TextureAddressMode /usr/local/include/SDL3/SDL_render.h /^} SDL_TextureAddressMode;$/;" t typeref:enum:SDL_TextureAddressMode
+SDL_Vertex /usr/local/include/SDL3/SDL_render.h /^typedef struct SDL_Vertex$/;" s
+SDL_Vertex /usr/local/include/SDL3/SDL_render.h /^} SDL_Vertex;$/;" t typeref:struct:SDL_Vertex
+SDL_render_h_ /usr/local/include/SDL3/SDL_render.h /^#define SDL_render_h_$/;" d
+STATE_FAILURE /home/strajder/src/lav-sdl/lav-sdl.c /^ STATE_FAILURE,$/;" e enum:__anona07934b70203 file:
+STATE_FAILURE /home/strajder/src/linije/linije.c /^ STATE_FAILURE,$/;" e enum:__anonf7ed0ac70203 file:
+STATE_FAILURE /home/strajder/src/linije/linije.c /^ STATE_FAILURE,$/;" e enum:__anonf7ed0ac70403 file:
+STATE_IDLE /home/strajder/src/linije/linije.c /^ STATE_IDLE,$/;" e enum:__anonf7ed0ac70203 file:
+STATE_IDLE /home/strajder/src/linije/linije.c /^ STATE_IDLE,$/;" e enum:__anonf7ed0ac70403 file:
+STATE_MOVING /home/strajder/src/linije/linije.c /^ STATE_MOVING,$/;" e enum:__anonf7ed0ac70203 file:
+STATE_MOVING /home/strajder/src/linije/linije.c /^ STATE_MOVING,$/;" e enum:__anonf7ed0ac70403 file:
+STATE_SEARCHING /home/strajder/src/lav-sdl/lav-sdl.c /^ STATE_SEARCHING,$/;" e enum:__anona07934b70203 file:
+STATE_SEARCHING /home/strajder/src/linije/linije.c /^ STATE_SEARCHING,$/;" e enum:__anonf7ed0ac70203 file:
+STATE_SEARCHING /home/strajder/src/linije/linije.c /^ STATE_SEARCHING,$/;" e enum:__anonf7ed0ac70403 file:
+STATE_SEARCHING_PAUSED /home/strajder/src/lav-sdl/lav-sdl.c /^ STATE_SEARCHING_PAUSED,$/;" e enum:__anona07934b70203 file:
+STATE_SEARCHING_PAUSED /home/strajder/src/linije/linije.c /^ STATE_SEARCHING_PAUSED,$/;" e enum:__anonf7ed0ac70203 file:
+STATE_SEARCHING_PAUSED /home/strajder/src/linije/linije.c /^ STATE_SEARCHING_PAUSED,$/;" e enum:__anonf7ed0ac70403 file:
+STATE_SELECTION /home/strajder/src/linije/linije.c /^ STATE_SELECTION,$/;" e enum:__anonf7ed0ac70203 file:
+STATE_SELECTION /home/strajder/src/linije/linije.c /^ STATE_SELECTION,$/;" e enum:__anonf7ed0ac70403 file:
+STATE_SUCCESS /home/strajder/src/lav-sdl/lav-sdl.c /^ STATE_SUCCESS$/;" e enum:__anona07934b70203 file:
+STATE_SUCCESS /home/strajder/src/linije/linije.c /^ STATE_SUCCESS$/;" e enum:__anonf7ed0ac70203 file:
+STATE_SUCCESS /home/strajder/src/linije/linije.c /^ STATE_SUCCESS$/;" e enum:__anonf7ed0ac70403 file:
+State /home/strajder/src/linije/linije.c /^struct State {$/;" s file:
+TER12_HEIGHT /home/strajder/src/lav-sdl/lav-sdl.c /^#define TER12_HEIGHT /;" d file:
+TER12_HEIGHT /home/strajder/src/linije/linije.c /^#define TER12_HEIGHT /;" d file:
+TER12_HEIGHT /home/strajder/src/linije/linije.c /^#define TER12_HEIGHT /;" d file:
+TER12_WIDTH /home/strajder/src/lav-sdl/lav-sdl.c /^#define TER12_WIDTH /;" d file:
+TER12_WIDTH /home/strajder/src/linije/linije.c /^#define TER12_WIDTH /;" d file:
+TER12_WIDTH /home/strajder/src/linije/linije.c /^#define TER12_WIDTH /;" d file:
+VALNAME /home/strajder/src/linije/linije.c /^#define VALNAME(/;" d file:
+W /home/strajder/tmp/pathfind/pf2.c /^#define W /;" d file:
+WIN_TITLE /home/strajder/src/lav-sdl/lav-sdl.c /^#define WIN_TITLE /;" d file:
+WIN_TITLE /home/strajder/src/linije/linije.c /^#define WIN_TITLE /;" d file:
+WIN_TITLE /home/strajder/src/linije/linije.c /^#define WIN_TITLE /;" d file:
+_M /home/strajder/tmp/pathfind/pf2.c /^static int _M[H][W] = {$/;" v typeref:typename:int[][] file:
+__anona07934b70103 /home/strajder/src/lav-sdl/lav-sdl.c /^enum {$/;" g file:
+__anona07934b70203 /home/strajder/src/lav-sdl/lav-sdl.c /^enum {$/;" g file:
+__anonbf6a67100103 /home/strajder/tmp/pathfind/pf2.c /^enum { CELL_EMPTY, CELL_FULL, CELL_START, CELL_END, CELL_PATH };$/;" g file:
+__anonf7ed0ac70103 /home/strajder/src/linije/linije.c /^enum {$/;" g file:
+__anonf7ed0ac70203 /home/strajder/src/linije/linije.c /^enum {$/;" g file:
+__anonf7ed0ac70303 /home/strajder/src/linije/linije.c /^enum {$/;" g file:
+__anonf7ed0ac70403 /home/strajder/src/linije/linije.c /^enum {$/;" g file:
+active /home/strajder/src/lav-sdl/lav-sdl.c /^ int active;$/;" m struct:AnimationState typeref:typename:int file:
+active /home/strajder/src/linije/linije.c /^ int active;$/;" m struct:AnimationState typeref:typename:int file:
+animation /home/strajder/src/lav-sdl/lav-sdl.c /^static struct AnimationState animation;$/;" v typeref:struct:AnimationState file:
+animation /home/strajder/src/linije/linije.c /^ struct AnimationState animation;$/;" m struct:State typeref:struct:AnimationState file:
+animation /home/strajder/src/linije/linije.c /^static struct AnimationState animation;$/;" v typeref:struct:AnimationState file:
+assign_pointFF /home/strajder/src/linije/linije.c /^assign_pointFF(const SDL_FPoint* from, SDL_FPoint* to)$/;" f typeref:typename:void
+assign_pointIF /home/strajder/src/lav-sdl/lav-sdl.c /^assign_pointIF(const SDL_Point* from, SDL_FPoint* to)$/;" f typeref:typename:void
+assign_pointIF /home/strajder/src/linije/linije.c /^assign_pointIF(const SDL_Point* from, SDL_FPoint* to)$/;" f typeref:typename:void
+assign_point_xyIF /home/strajder/src/lav-sdl/lav-sdl.c /^assign_point_xyIF(const int x, const int y, SDL_FPoint* to)$/;" f typeref:typename:void
+assign_point_xyIF /home/strajder/src/linije/linije.c /^assign_point_xyIF(const int x, const int y, SDL_FPoint* to)$/;" f typeref:typename:void
+background /home/strajder/src/lav-sdl/lav-sdl.c /^static SDL_Texture* background = NULL;$/;" v typeref:typename:SDL_Texture * file:
+background /home/strajder/src/linije/linije.c /^ SDL_Texture* background = NULL;$/;" m struct:State typeref:typename:SDL_Texture * file:
+background /home/strajder/src/linije/linije.c /^ SDL_Texture* background = NULL;$/;" m struct:State typeref:typename:SDL_Texture * file:
+background /home/strajder/src/linije/linije.c /^ SDL_Texture* background = NULL;$/;" m struct:State typeref:typename:SDL_Texture * file:
+background /home/strajder/src/linije/linije.c /^ SDL_Texture* background;$/;" m struct:State typeref:typename:SDL_Texture * file:
+background /home/strajder/src/linije/linije.c /^static SDL_Texture* background = NULL;$/;" v typeref:typename:SDL_Texture * file:
+calculate_delta /home/strajder/src/lav-sdl/lav-sdl.c /^calculate_delta(void)$/;" f typeref:typename:void
+calculate_delta /home/strajder/src/linije/linije.c /^calculate_delta(struct State* state)$/;" f typeref:typename:void
+calculate_delta /home/strajder/src/linije/linije.c /^calculate_delta(void)$/;" f typeref:typename:void
+calculate_display_size /home/strajder/src/linije/linije.c /^calculate_display_size(struct State* state)$/;" f typeref:typename:void
+calculate_display_size /home/strajder/src/linije/linije.c /^calculate_display_size(void)$/;" f typeref:typename:void
+calculate_grid_origin /home/strajder/src/linije/linije.c /^calculate_grid_origin(const int physical, float* sx, float* sy)$/;" f typeref:typename:void
+calculate_grid_origin /home/strajder/src/linije/linije.c /^calculate_grid_origin(const struct State* state, float* sx, float* sy)$/;" f typeref:typename:void
+calculate_grid_origin /home/strajder/src/linije/linije.c /^calculate_grid_origin(float* sx, float* sy)$/;" f typeref:typename:void
+calculate_grid_origin /home/strajder/src/linije/linije.c /^calculate_grid_origin(struct State* state, float* sx, float* sy)$/;" f typeref:typename:void
+calculate_screen_size /home/strajder/src/lav-sdl/lav-sdl.c /^calculate_screen_size(void)$/;" f typeref:typename:void
+calculate_screen_size /home/strajder/src/linije/linije.c /^calculate_screen_size(void)$/;" f typeref:typename:void
+cell_image /home/strajder/src/linije/linije.c /^static char* cell_image[] = {"[ ]", "[R]", "[B]", "[G]", "[P]", "[O]", "[\/]",$/;" v typeref:typename:char * [] file:
+cell_image /home/strajder/src/linije/linije.c /^static char* cell_image[] = {$/;" v typeref:typename:char * [] file:
+cell_image /home/strajder/tmp/pathfind/pf2.c /^const char* cell_image[] = {"[ ]", "[@]", "[A]", "[B]", "[.]"};$/;" v typeref:typename:const char * []
+cell_names /home/strajder/src/linije/linije.c /^const char* cell_names[] = {$/;" v typeref:typename:const char * []
+cell_names /home/strajder/src/linije/linije.c /^static char cell_names[][] = {$/;" v typeref:typename:char[][] file:
+cell_names /home/strajder/src/linije/linije.c /^static char* cell_names[] = {$/;" v typeref:typename:char * [] file:
+cell_names /home/strajder/src/linije/linije.c /^static char** cell_names = {$/;" v typeref:typename:char ** file:
+cell_scale_factor /home/strajder/src/linije/linije.c /^ float cell_scale_factor = 2.0f;$/;" m struct:State typeref:typename:float file:
+cell_scale_factor /home/strajder/src/linije/linije.c /^ float cell_scale_factor = 2.0f;$/;" m struct:State typeref:typename:float file:
+cell_scale_factor /home/strajder/src/linije/linije.c /^ float cell_scale_factor;$/;" m struct:State typeref:typename:float file:
+cell_scale_factor /home/strajder/src/linije/linije.c /^static float cell_scale_factor = 2.0f;$/;" v typeref:typename:float file:
+cell_scale_factor /home/strajder/src/linije/linije.c /^static float cell_scale_factor = 2.0f;$/;" v typeref:typename:float file:
+cells /home/strajder/src/lav-sdl/lav-sdl.c /^ char** cells;$/;" m struct:Labyrinth typeref:typename:char ** file:
+cells /home/strajder/src/linije/linije.c /^ char** cells;$/;" m struct:Grid typeref:typename:char ** file:
+cells /home/strajder/src/linije/linije.c /^ char** cells;$/;" m struct:Labyrinth typeref:typename:char ** file:
+check_five /home/strajder/src/linije/linije.c /^check_five(struct State* state)$/;" f typeref:typename:void
+check_five /home/strajder/src/linije/linije.c /^check_five(struct State* state, struct Cell* c)$/;" f typeref:typename:void
+check_five /home/strajder/src/linije/linije.c /^check_five(void)$/;" f typeref:typename:void
+check_five_deltas /home/strajder/src/linije/linije.c /^const int check_five_deltas[][2] = {$/;" v typeref:typename:const int[][2]
+check_five_deltas /home/strajder/src/linije/linije.c /^const int check_five_deltas[][4] = {$/;" v typeref:typename:const int[][4]
+cleanup /home/strajder/src/lav-sdl/lav-sdl.c /^cleanup(void)$/;" f typeref:typename:void
+cleanup /home/strajder/src/linije/linije.c /^cleanup(struct State* state)$/;" f typeref:typename:void
+cleanup /home/strajder/src/linije/linije.c /^cleanup(void)$/;" f typeref:typename:void
+color /usr/local/include/SDL3/SDL_render.h /^ SDL_FColor color; \/**< Vertex color *\/$/;" m struct:SDL_Vertex typeref:typename:SDL_FColor
+contents /home/strajder/src/linije/linije.c /^ int contents;$/;" m struct:Cell typeref:typename:int file:
+coord /home/strajder/src/linije/linije.c /^ SDL_FPoint coord;$/;" m struct:Cell typeref:typename:SDL_FPoint file:
+coord /home/strajder/src/linije/linije.c /^ struct Coord coord;$/;" m struct:Cell typeref:struct:Coord file:
+coord /home/strajder/tmp/pathfind/pf2.c /^ struct Coord coord;$/;" m struct:Cell typeref:struct:Coord file:
+coords /home/strajder/src/linije/linije.c /^ SDL_FPoint coords;$/;" m struct:Cell typeref:typename:SDL_FPoint file:
+delta /home/strajder/src/lav-sdl/lav-sdl.c /^ SDL_FPoint delta;$/;" m struct:AnimationState typeref:typename:SDL_FPoint file:
+delta /home/strajder/src/linije/linije.c /^ SDL_FPoint delta;$/;" m struct:AnimationState typeref:typename:SDL_FPoint file:
+destination /home/strajder/src/lav-sdl/lav-sdl.c /^ SDL_FPoint destination;$/;" m struct:AnimationState typeref:typename:SDL_FPoint file:
+destination /home/strajder/src/linije/linije.c /^ SDL_FPoint destination;$/;" m struct:AnimationState typeref:typename:SDL_FPoint file:
+destination /home/strajder/src/linije/linije.c /^ SDL_Point destination;$/;" m struct:AnimationState typeref:typename:SDL_Point file:
+display_height /home/strajder/src/lav-sdl/lav-sdl.c /^static int display_height = DEFAULT_HEIGHT;$/;" v typeref:typename:int file:
+display_height /home/strajder/src/linije/linije.c /^ int display_height = DEFAULT_HEIGHT;$/;" m struct:State typeref:typename:int file:
+display_height /home/strajder/src/linije/linije.c /^ int display_height = DEFAULT_HEIGHT;$/;" m struct:State typeref:typename:int file:
+display_height /home/strajder/src/linije/linije.c /^ int display_height = DEFAULT_HEIGHT;$/;" m struct:State typeref:typename:int file:
+display_height /home/strajder/src/linije/linije.c /^ int display_height;$/;" m struct:State typeref:typename:int file:
+display_height /home/strajder/src/linije/linije.c /^static int display_height = DEFAULT_HEIGHT;$/;" v typeref:typename:int file:
+display_height /home/strajder/src/linije/linije.c /^static int display_height = DEFAULT_HEIGHT;$/;" v typeref:typename:int file:
+display_width /home/strajder/src/lav-sdl/lav-sdl.c /^static int display_width = DEFAULT_WIDTH; \/* Physical, detected *\/$/;" v typeref:typename:int file:
+display_width /home/strajder/src/linije/linije.c /^ int display_width = DEFAULT_WIDTH; \/* Physical, detected *\/$/;" m struct:State typeref:typename:int file:
+display_width /home/strajder/src/linije/linije.c /^ int display_width = DEFAULT_WIDTH; \/* Physical, detected *\/$/;" m struct:State typeref:typename:int file:
+display_width /home/strajder/src/linije/linije.c /^ int display_width = DEFAULT_WIDTH; \/* Physical, detected *\/$/;" m struct:State typeref:typename:int file:
+display_width /home/strajder/src/linije/linije.c /^ int display_width; \/* Physical, detected *\/$/;" m struct:State typeref:typename:int file:
+display_width /home/strajder/src/linije/linije.c /^static int display_width = DEFAULT_WIDTH; \/* Physical, detected *\/$/;" v typeref:typename:int file:
+display_width /home/strajder/src/linije/linije.c /^static int display_width = DEFAULT_WIDTH; \/* Physical, detected *\/$/;" v typeref:typename:int file:
+do_exit /home/strajder/src/linije/linije.c /^do_exit(const int code, struct State* state)$/;" f typeref:typename:void
+down /home/strajder/src/linije/linije.c /^ struct Cell* down;$/;" m struct:Cell typeref:struct:Cell * file:
+down /home/strajder/tmp/pathfind/pf2.c /^ struct Cell* down;$/;" m struct:Cell typeref:struct:Cell * file:
+draw /home/strajder/src/lav-sdl/lav-sdl.c /^draw(void)$/;" f typeref:typename:void
+draw /home/strajder/src/linije/linije.c /^draw(struct State* state)$/;" f typeref:typename:void
+draw /home/strajder/src/linije/linije.c /^draw(void)$/;" f typeref:typename:void
+draw_background /home/strajder/src/lav-sdl/lav-sdl.c /^draw_background(SDL_FRect* bg_rect, SDL_FRect* cell_rect, SDL_FRect* dest_rect)$/;" f typeref:typename:void
+draw_background /home/strajder/src/linije/linije.c /^draw_background(SDL_FRect* bg_rect)$/;" f typeref:typename:void
+draw_background /home/strajder/src/linije/linije.c /^draw_background(SDL_FRect* bg_rect, SDL_FRect* cell_rect, SDL_FRect* dest_rect)$/;" f typeref:typename:void
+draw_background /home/strajder/src/linije/linije.c /^draw_background(struct State* state, SDL_FRect* bg_rect)$/;" f typeref:typename:void
+draw_background /home/strajder/src/linije/linije.c /^draw_background(void)$/;" f typeref:typename:void
+draw_help_dialog /home/strajder/src/lav-sdl/lav-sdl.c /^draw_help_dialog(void)$/;" f typeref:typename:void
+draw_help_dialog /home/strajder/src/linije/linije.c /^draw_help_dialog(struct State* state)$/;" f typeref:typename:void
+draw_help_dialog /home/strajder/src/linije/linije.c /^draw_help_dialog(void)$/;" f typeref:typename:void
+draw_text /home/strajder/src/lav-sdl/lav-sdl.c /^draw_text(const int x, const int y, const int font_width, const int font_height,$/;" f typeref:typename:void
+draw_text /home/strajder/src/linije/linije.c /^draw_text(const int x, const int y, const int font_width, const int font_height,$/;" f typeref:typename:void
+draw_text /home/strajder/src/linije/linije.c /^draw_text(struct State* state, const int x, const int y, const int font_width, const int font_he/;" f typeref:typename:void
+draw_text /home/strajder/src/linije/linije.c /^draw_text(struct State* state, const int x, const int y, const int font_width,$/;" f typeref:typename:void
+empty /home/strajder/src/linije/linije.c /^ int empty; \/* logical variables *\/$/;" m struct:Cell typeref:typename:int file:
+empty /home/strajder/src/linije/linije.c /^ int empty; \/* logical variables *\/$/;" m struct:Cell typeref:typename:int file:
+empty /home/strajder/src/linije/linije.c /^ int empty;$/;" m struct:Cell typeref:typename:int file:
+empty /home/strajder/tmp/pathfind/pf2.c /^ int empty;$/;" m struct:Cell typeref:typename:int file:
+end /home/strajder/src/lav-sdl/lav-sdl.c /^static SDL_Point hero, start, end;$/;" v typeref:typename:SDL_Point file:
+end /home/strajder/src/linije/linije.c /^ SDL_FPoint end;$/;" m struct:AnimationState typeref:typename:SDL_FPoint file:
+end /home/strajder/src/linije/linije.c /^ SDL_Point end;$/;" m struct:AnimationState typeref:typename:SDL_Point file:
+end /home/strajder/src/linije/linije.c /^static SDL_Point hero, start, end;$/;" v typeref:typename:SDL_Point file:
+ending /home/strajder/src/linije/linije.c /^ int ending;$/;" m struct:Cell typeref:typename:int file:
+ending /home/strajder/tmp/pathfind/pf2.c /^ int ending;$/;" m struct:Cell typeref:typename:int file:
+fill_triplet /home/strajder/src/linije/linije.c /^fill_triplet(struct State* state)$/;" f typeref:typename:void
+fill_triplet /home/strajder/src/linije/linije.c /^fill_triplet(void)$/;" f typeref:typename:void
+final_step /home/strajder/src/lav-sdl/lav-sdl.c /^ int final_step;$/;" m struct:AnimationState typeref:typename:int file:
+final_step /home/strajder/src/linije/linije.c /^ int final_step;$/;" m struct:AnimationState typeref:typename:int file:
+find_shortest_path /home/strajder/src/linije/linije.c /^find_shortest_path(struct Cell* c, struct Cell* dist_source, const int dist)$/;" f typeref:typename:void
+find_shortest_path /home/strajder/src/linije/linije.c /^find_shortest_path(struct Cell* c, struct Cell* source, const int dist)$/;" f typeref:typename:void
+find_shortest_path /home/strajder/tmp/pathfind/pf2.c /^find_shortest_path(struct Cell* c, struct Cell* dist_source, const int dist)$/;" f typeref:typename:void
+format /usr/local/include/SDL3/SDL_render.h /^ SDL_PixelFormat format; \/**< The format of the texture, read-only *\/$/;" m struct:SDL_Texture typeref:typename:SDL_PixelFormat
+fragment_shader /usr/local/include/SDL3/SDL_render.h /^ SDL_GPUShader *fragment_shader; \/**< The fragment shader to use when this render state is a/;" m struct:SDL_GPURenderStateDesc typeref:typename:SDL_GPUShader *
+full_screen /home/strajder/src/linije/linije.c /^ int full_screen = 1;$/;" m struct:State typeref:typename:int file:
+full_screen /home/strajder/src/linije/linije.c /^ int full_screen = 1;$/;" m struct:State typeref:typename:int file:
+full_screen /home/strajder/src/linije/linije.c /^ int full_screen = 1;$/;" m struct:State typeref:typename:int file:
+full_screen /home/strajder/src/linije/linije.c /^ int full_screen;$/;" m struct:State typeref:typename:int file:
+full_screen /home/strajder/src/linije/linije.c /^static int full_screen = 1;$/;" v typeref:typename:int file:
+full_screen /home/strajder/src/linije/linije.c /^static int full_screen = 0;$/;" v typeref:typename:int file:
+full_screen /home/strajder/src/linije/linije.c /^static int full_screen = 1;$/;" v typeref:typename:int file:
+get_hero_sprite_xy /home/strajder/src/lav-sdl/lav-sdl.c /^get_hero_sprite_xy(float* x, float* y)$/;" f typeref:typename:void
+get_hero_sprite_xy /home/strajder/src/linije/linije.c /^get_hero_sprite_xy(float* x, float* y)$/;" f typeref:typename:void
+get_sprite_xy /home/strajder/src/lav-sdl/lav-sdl.c /^get_sprite_xy(const char cell, float* x, float* y)$/;" f typeref:typename:void
+get_sprite_xy /home/strajder/src/linije/linije.c /^get_sprite_xy(const char cell, float* x, float* y)$/;" f typeref:typename:void
+grid /home/strajder/src/linije/linije.c /^ struct Cell* grid = NULL;$/;" m struct:State typeref:struct:Cell * file:
+grid /home/strajder/src/linije/linije.c /^ struct Cell* grid = NULL;$/;" m struct:State typeref:struct:Cell * file:
+grid /home/strajder/src/linije/linije.c /^ struct Cell* grid = NULL;$/;" m struct:State typeref:struct:Cell * file:
+grid /home/strajder/src/linije/linije.c /^ struct Cell* grid;$/;" m struct:State typeref:struct:Cell * file:
+grid /home/strajder/src/linije/linije.c /^static struct Cell* grid = NULL;$/;" v typeref:struct:Cell * file:
+grid /home/strajder/src/linije/linije.c /^static struct Cell* grid = NULL;$/;" v typeref:struct:Cell * file:
+grid /home/strajder/src/linije/linije.c /^static struct Cell* grid;$/;" v typeref:struct:Cell * file:
+grid /home/strajder/src/linije/linije.c /^static struct Grid grid;$/;" v typeref:struct:Grid file:
+grid_coord_to_screen_coord /home/strajder/src/linije/linije.c /^grid_coord_to_screen_coord(const int x, const int y, const float startx,$/;" f typeref:typename:void
+grid_coord_to_screen_coord /home/strajder/src/linije/linije.c /^grid_coord_to_screen_coord(const struct State* state, const int x, const int y, const float star/;" f typeref:typename:void
+grid_coord_to_screen_coord /home/strajder/src/linije/linije.c /^grid_coord_to_screen_coord(const struct State* state, const int x, const int y,$/;" f typeref:typename:void
+grid_coord_to_screen_coordF /home/strajder/src/linije/linije.c /^grid_coord_to_screen_coordF(const float x, const float y, const float startx,$/;" f typeref:typename:void
+grid_coord_to_screen_coordF /home/strajder/src/linije/linije.c /^grid_coord_to_screen_coordF(const float x, const float y,$/;" f typeref:typename:void
+grid_coord_to_screen_coordF /home/strajder/src/linije/linije.c /^grid_coord_to_screen_coordF(const struct State* state, const float x, const float y, const float/;" f typeref:typename:void
+grid_coord_to_screen_coordF /home/strajder/src/linije/linije.c /^grid_coord_to_screen_coordF(const struct State* state, const float x,$/;" f typeref:typename:void
+h /usr/local/include/SDL3/SDL_render.h /^ int h; \/**< The height of the texture, read-only. *\/$/;" m struct:SDL_Texture typeref:typename:int
+handle_click /home/strajder/src/linije/linije.c /^handle_click(struct State* state)$/;" f typeref:typename:void
+handle_click /home/strajder/src/linije/linije.c /^handle_click(void)$/;" f typeref:typename:void
+handle_event /home/strajder/src/lav-sdl/lav-sdl.c /^handle_event(SDL_Event* event)$/;" f typeref:typename:void
+handle_event /home/strajder/src/linije/linije.c /^handle_event(SDL_Event* event)$/;" f typeref:typename:void
+handle_event /home/strajder/src/linije/linije.c /^handle_event(struct State* state, SDL_Event* event)$/;" f typeref:typename:void
+height /home/strajder/src/lav-sdl/lav-sdl.c /^ int height;$/;" m struct:Labyrinth typeref:typename:int file:
+height /home/strajder/src/linije/linije.c /^ int height;$/;" m struct:Grid typeref:typename:int file:
+height /home/strajder/src/linije/linije.c /^ int height;$/;" m struct:Labyrinth typeref:typename:int file:
+help_shown /home/strajder/src/lav-sdl/lav-sdl.c /^static int help_shown = 0;$/;" v typeref:typename:int file:
+help_shown /home/strajder/src/linije/linije.c /^ int help_shown = 0;$/;" m struct:State typeref:typename:int file:
+help_shown /home/strajder/src/linije/linije.c /^ int help_shown = 0;$/;" m struct:State typeref:typename:int file:
+help_shown /home/strajder/src/linije/linije.c /^ int help_shown = 0;$/;" m struct:State typeref:typename:int file:
+help_shown /home/strajder/src/linije/linije.c /^ int help_shown;$/;" m struct:State typeref:typename:int file:
+help_shown /home/strajder/src/linije/linije.c /^static int help_shown = 0;$/;" v typeref:typename:int file:
+help_shown /home/strajder/src/linije/linije.c /^static int help_shown = 0;$/;" v typeref:typename:int file:
+help_text /home/strajder/src/lav-sdl/lav-sdl.c /^const char* help_text[] = {$/;" v typeref:typename:const char * []
+help_text /home/strajder/src/linije/linije.c /^const char* help_text[] = {$/;" v typeref:typename:const char * []
+hero /home/strajder/src/lav-sdl/lav-sdl.c /^static SDL_Point hero, start, end;$/;" v typeref:typename:SDL_Point file:
+hero /home/strajder/src/linije/linije.c /^static SDL_Point hero, start, end;$/;" v typeref:typename:SDL_Point file:
+init_animation /home/strajder/src/linije/linije.c /^init_animation(struct AnimationState* animation)$/;" f typeref:typename:void
+init_cell /home/strajder/src/linije/linije.c /^init_cell(struct Cell* c, const SDL_FPoint* coord)$/;" f typeref:typename:void
+init_cell /home/strajder/src/linije/linije.c /^init_cell(struct Cell* c, const SDL_FPoint* coords)$/;" f typeref:typename:void
+init_cell /home/strajder/src/linije/linije.c /^init_cell(struct Cell* c, const struct Coord* coord)$/;" f typeref:typename:void
+init_state /home/strajder/src/linije/linije.c /^init_state(struct State* state)$/;" f typeref:typename:void
+labyrinth /home/strajder/src/lav-sdl/lav-sdl.c /^static struct Labyrinth labyrinth;$/;" v typeref:struct:Labyrinth file:
+labyrinth /home/strajder/src/linije/linije.c /^static struct Labyrinth labyrinth;$/;" v typeref:struct:Labyrinth file:
+labyrinth_coord_to_screen_coord /home/strajder/src/lav-sdl/lav-sdl.c /^labyrinth_coord_to_screen_coord(const int x, const int y, const float startx,$/;" f typeref:typename:void
+labyrinth_coord_to_screen_coord /home/strajder/src/linije/linije.c /^labyrinth_coord_to_screen_coord(const int x, const int y, const float startx,$/;" f typeref:typename:void
+labyrinth_coord_to_screen_coordF /home/strajder/src/lav-sdl/lav-sdl.c /^labyrinth_coord_to_screen_coordF(const float x, const float y,$/;" f typeref:typename:void
+labyrinth_coord_to_screen_coordF /home/strajder/src/linije/linije.c /^labyrinth_coord_to_screen_coordF(const float x, const float y,$/;" f typeref:typename:void
+left /home/strajder/src/linije/linije.c /^ struct Cell* left;$/;" m struct:Cell typeref:struct:Cell * file:
+left /home/strajder/tmp/pathfind/pf2.c /^ struct Cell* left;$/;" m struct:Cell typeref:struct:Cell * file:
+load_labyrinth /home/strajder/src/lav-sdl/lav-sdl.c /^load_labyrinth(const char* pathname)$/;" f typeref:typename:int
+load_labyrinth /home/strajder/src/linije/linije.c /^load_labyrinth(const char* pathname)$/;" f typeref:typename:int
+load_textures /home/strajder/src/lav-sdl/lav-sdl.c /^load_textures(void)$/;" f typeref:typename:int
+load_textures /home/strajder/src/linije/linije.c /^load_textures(struct State* state)$/;" f typeref:typename:int
+load_textures /home/strajder/src/linije/linije.c /^load_textures(void)$/;" f typeref:typename:int
+location_pointer /home/strajder/src/lav-sdl/lav-sdl.c /^static int location_pointer = 0;$/;" v typeref:typename:int file:
+location_pointer /home/strajder/src/linije/linije.c /^ int location_pointer = 0;$/;" m struct:State typeref:typename:int file:
+location_pointer /home/strajder/src/linije/linije.c /^ int location_pointer = 0;$/;" m struct:State typeref:typename:int file:
+location_pointer /home/strajder/src/linije/linije.c /^ int location_pointer = 0;$/;" m struct:State typeref:typename:int file:
+location_pointer /home/strajder/src/linije/linije.c /^ int location_pointer;$/;" m struct:State typeref:typename:int file:
+location_pointer /home/strajder/src/linije/linije.c /^static int location_pointer = 0;$/;" v typeref:typename:int file:
+location_pop /home/strajder/src/lav-sdl/lav-sdl.c /^location_pop(SDL_Point* location)$/;" f typeref:typename:int
+location_pop /home/strajder/src/linije/linije.c /^location_pop(SDL_Point* location)$/;" f typeref:typename:int
+location_pop /home/strajder/src/linije/linije.c /^location_pop(struct State* state, SDL_Point* location)$/;" f typeref:typename:int
+location_push /home/strajder/src/lav-sdl/lav-sdl.c /^location_push(const SDL_Point* location)$/;" f typeref:typename:void
+location_push /home/strajder/src/linije/linije.c /^location_push(const SDL_Point* location)$/;" f typeref:typename:void
+location_push /home/strajder/src/linije/linije.c /^location_push(struct State* state, const SDL_Point* location)$/;" f typeref:typename:void
+location_stack /home/strajder/src/lav-sdl/lav-sdl.c /^static SDL_Point* location_stack = NULL;$/;" v typeref:typename:SDL_Point * file:
+location_stack /home/strajder/src/linije/linije.c /^ SDL_Point* location_stack = NULL;$/;" m struct:State typeref:typename:SDL_Point * file:
+location_stack /home/strajder/src/linije/linije.c /^ SDL_Point* location_stack = NULL;$/;" m struct:State typeref:typename:SDL_Point * file:
+location_stack /home/strajder/src/linije/linije.c /^ SDL_Point* location_stack;$/;" m struct:State typeref:typename:SDL_Point * file:
+location_stack /home/strajder/src/linije/linije.c /^static SDL_Point* location_stack = NULL;$/;" v typeref:typename:SDL_Point * file:
+main /home/strajder/src/lav-sdl/lav-sdl.c /^main(int argc, char** argv)$/;" f typeref:typename:int
+main /home/strajder/src/linije/linije.c /^main(int argc, char** argv)$/;" f typeref:typename:int
+main /home/strajder/tmp/pathfind/pf2.c /^main(void)$/;" f typeref:typename:int
+mark_path /home/strajder/src/linije/linije.c /^mark_path(struct Cell* c)$/;" f typeref:typename:void
+mark_path /home/strajder/tmp/pathfind/pf2.c /^mark_path(struct Cell* c)$/;" f typeref:typename:void
+mark_path_forward /home/strajder/src/linije/linije.c /^mark_path_forward(struct Cell* c)$/;" f typeref:typename:void
+mode /home/strajder/src/linije/linije.c /^ int mode;$/;" m struct:State typeref:typename:int file:
+next_step /home/strajder/src/lav-sdl/lav-sdl.c /^next_step(void)$/;" f typeref:typename:void
+next_step /home/strajder/src/linije/linije.c /^next_step(struct State* state)$/;" f typeref:typename:void
+next_step /home/strajder/src/linije/linije.c /^next_step(void)$/;" f typeref:typename:void
+num_sampler_bindings /usr/local/include/SDL3/SDL_render.h /^ Sint32 num_sampler_bindings; \/**< The number of additional fragment samplers to bind whe/;" m struct:SDL_GPURenderStateDesc typeref:typename:Sint32
+num_storage_buffers /usr/local/include/SDL3/SDL_render.h /^ Sint32 num_storage_buffers; \/**< The number of storage buffers to bind when this render /;" m struct:SDL_GPURenderStateDesc typeref:typename:Sint32
+num_storage_textures /usr/local/include/SDL3/SDL_render.h /^ Sint32 num_storage_textures; \/**< The number of storage textures to bind when this rende/;" m struct:SDL_GPURenderStateDesc typeref:typename:Sint32
+passable /home/strajder/src/lav-sdl/lav-sdl.c /^passable(const int x, const int y)$/;" f typeref:typename:int
+passable /home/strajder/src/linije/linije.c /^passable(const int x, const int y)$/;" f typeref:typename:int
+passable /home/strajder/src/linije/linije.c /^passable(const struct State* state, const int x, const int y)$/;" f typeref:typename:int
+path /home/strajder/src/linije/linije.c /^ int path;$/;" m struct:Cell typeref:typename:int file:
+path /home/strajder/tmp/pathfind/pf2.c /^ int path;$/;" m struct:Cell typeref:typename:int file:
+path_dist /home/strajder/src/linije/linije.c /^ int path_dist; \/* length of shortest path so far *\/$/;" m struct:Cell typeref:typename:int file:
+path_dist /home/strajder/src/linije/linije.c /^ int path_dist; \/* length of shortest path so far *\/$/;" m struct:Cell typeref:typename:int file:
+path_end /home/strajder/src/linije/linije.c /^ struct Cell* path_end = NULL;$/;" m struct:State typeref:struct:Cell * file:
+path_end /home/strajder/src/linije/linije.c /^ struct Cell* path_end = NULL;$/;" m struct:State typeref:struct:Cell * file:
+path_end /home/strajder/src/linije/linije.c /^ struct Cell* path_end = NULL;$/;" m struct:State typeref:struct:Cell * file:
+path_end /home/strajder/src/linije/linije.c /^ struct Cell* path_end;$/;" m struct:State typeref:struct:Cell * file:
+path_end /home/strajder/src/linije/linije.c /^static struct Cell* path_end = NULL;$/;" v typeref:struct:Cell * file:
+path_end /home/strajder/src/linije/linije.c /^static struct Cell* path_end = NULL;$/;" v typeref:struct:Cell * file:
+path_next /home/strajder/src/linije/linije.c /^ struct Cell* path_next; \/* next cell in shortest path *\/$/;" m struct:Cell typeref:struct:Cell * file:
+path_next /home/strajder/src/linije/linije.c /^ struct Cell* path_next; \/* next cell in shortest path *\/$/;" m struct:Cell typeref:struct:Cell * file:
+path_source /home/strajder/src/linije/linije.c /^ struct Cell* path_source; \/* previous cell in shortest path *\/$/;" m struct:Cell typeref:struct:Cell * file:
+path_start /home/strajder/src/linije/linije.c /^ struct Cell* path_start = NULL;$/;" m struct:State typeref:struct:Cell * file:
+path_start /home/strajder/src/linije/linije.c /^ struct Cell* path_start = NULL;$/;" m struct:State typeref:struct:Cell * file:
+path_start /home/strajder/src/linije/linije.c /^ struct Cell* path_start;$/;" m struct:State typeref:struct:Cell * file:
+path_start /home/strajder/src/linije/linije.c /^static struct Cell* path_start = NULL;$/;" v typeref:struct:Cell * file:
+pf_initialize /home/strajder/src/linije/linije.c /^pf_initialize(struct Cell* c, const struct Coord* coord)$/;" f typeref:typename:void
+pf_initialize /home/strajder/tmp/pathfind/pf2.c /^pf_initialize(struct Cell* c, const struct Coord* coord)$/;" f typeref:typename:void
+pointer /home/strajder/src/lav-sdl/lav-sdl.c /^static SDL_FPoint pointer;$/;" v typeref:typename:SDL_FPoint file:
+pointer /home/strajder/src/linije/linije.c /^ SDL_FPoint pointer;$/;" m struct:State typeref:typename:SDL_FPoint file:
+pointer /home/strajder/src/linije/linije.c /^ SDL_FPoint pointer;$/;" m struct:State typeref:typename:SDL_FPoint file:
+pointer /home/strajder/src/linije/linije.c /^static SDL_FPoint pointer;$/;" v typeref:typename:SDL_FPoint file:
+pos /home/strajder/src/linije/linije.c /^ SDL_FPoint pos;$/;" m struct:AnimationState typeref:typename:SDL_FPoint file:
+position /home/strajder/src/lav-sdl/lav-sdl.c /^ SDL_FPoint position;$/;" m struct:AnimationState typeref:typename:SDL_FPoint file:
+position /home/strajder/src/linije/linije.c /^ SDL_FPoint position;$/;" m struct:AnimationState typeref:typename:SDL_FPoint file:
+position /usr/local/include/SDL3/SDL_render.h /^ SDL_FPoint position; \/**< Vertex position, in SDL_Renderer coordinates *\/$/;" m struct:SDL_Vertex typeref:typename:SDL_FPoint
+print_cell /home/strajder/tmp/pathfind/pf2.c /^print_cell(const struct Cell* c, const char* name)$/;" f typeref:typename:void
+print_coord /home/strajder/tmp/pathfind/pf2.c /^print_coord(const struct Coord* coord)$/;" f typeref:typename:void
+print_debug /home/strajder/src/lav-sdl/lav-sdl.c /^print_debug(const char* fmt, ...)$/;" f typeref:typename:void
+print_debug /home/strajder/src/linije/linije.c /^print_debug(const char* fmt, ...)$/;" f typeref:typename:void
+print_error /home/strajder/src/lav-sdl/lav-sdl.c /^print_error(const char* fmt, ...)$/;" f typeref:typename:void
+print_error /home/strajder/src/linije/linije.c /^print_error(const char* fmt, ...)$/;" f typeref:typename:void
+print_matrix /home/strajder/src/linije/linije.c /^print_matrix(const struct Cell* M)$/;" f typeref:typename:void
+print_matrix /home/strajder/tmp/pathfind/pf2.c /^print_matrix(const struct Cell* M)$/;" f typeref:typename:void
+print_path /home/strajder/src/linije/linije.c /^print_path(struct Cell* c)$/;" f typeref:typename:void
+redraw /home/strajder/src/lav-sdl/lav-sdl.c /^static int redraw = 1;$/;" v typeref:typename:int file:
+redraw /home/strajder/src/linije/linije.c /^ int redraw = 1;$/;" m struct:State typeref:typename:int file:
+redraw /home/strajder/src/linije/linije.c /^ int redraw = 1;$/;" m struct:State typeref:typename:int file:
+redraw /home/strajder/src/linije/linije.c /^ int redraw = 1;$/;" m struct:State typeref:typename:int file:
+redraw /home/strajder/src/linije/linije.c /^ int redraw;$/;" m struct:State typeref:typename:int file:
+redraw /home/strajder/src/linije/linije.c /^static int redraw = 1;$/;" v typeref:typename:int file:
+redraw /home/strajder/src/linije/linije.c /^static int redraw = 1;$/;" v typeref:typename:int file:
+refcount /usr/local/include/SDL3/SDL_render.h /^ int refcount; \/**< Application reference count, used when freeing texture *\/$/;" m struct:SDL_Texture typeref:typename:int
+renderer /home/strajder/src/lav-sdl/lav-sdl.c /^static SDL_Renderer* renderer = NULL;$/;" v typeref:typename:SDL_Renderer * file:
+renderer /home/strajder/src/linije/linije.c /^ SDL_Renderer* renderer = NULL;$/;" m struct:State typeref:typename:SDL_Renderer * file:
+renderer /home/strajder/src/linije/linije.c /^ SDL_Renderer* renderer = NULL;$/;" m struct:State typeref:typename:SDL_Renderer * file:
+renderer /home/strajder/src/linije/linije.c /^ SDL_Renderer* renderer = NULL;$/;" m struct:State typeref:typename:SDL_Renderer * file:
+renderer /home/strajder/src/linije/linije.c /^ SDL_Renderer* renderer;$/;" m struct:State typeref:typename:SDL_Renderer * file:
+renderer /home/strajder/src/linije/linije.c /^static SDL_Renderer* renderer = NULL;$/;" v typeref:typename:SDL_Renderer * file:
+renderer /home/strajder/src/linije/linije.c /^static SDL_Renderer* renderer = NULL;$/;" v typeref:typename:SDL_Renderer * file:
+reset /home/strajder/src/lav-sdl/lav-sdl.c /^reset(void)$/;" f typeref:typename:void
+reset /home/strajder/src/linije/linije.c /^reset(struct State* state)$/;" f typeref:typename:void
+reset /home/strajder/src/linije/linije.c /^reset(void)$/;" f typeref:typename:void
+reset_path /home/strajder/src/linije/linije.c /^reset_path(struct Cell* c)$/;" f typeref:typename:void
+reset_path /home/strajder/src/linije/linije.c /^reset_path(struct Cell* grid)$/;" f typeref:typename:void
+reset_path /home/strajder/src/linije/linije.c /^reset_path(struct Cell* tail)$/;" f typeref:typename:void
+reset_path /home/strajder/src/linije/linije.c /^reset_path(void)$/;" f typeref:typename:void
+right /home/strajder/src/linije/linije.c /^ struct Cell* right;$/;" m struct:Cell typeref:struct:Cell * file:
+right /home/strajder/tmp/pathfind/pf2.c /^ struct Cell* right;$/;" m struct:Cell typeref:struct:Cell * file:
+running /home/strajder/src/lav-sdl/lav-sdl.c /^static int running = 1;$/;" v typeref:typename:int file:
+running /home/strajder/src/linije/linije.c /^ int running = 1;$/;" m struct:State typeref:typename:int file:
+running /home/strajder/src/linije/linije.c /^ int running = 1;$/;" m struct:State typeref:typename:int file:
+running /home/strajder/src/linije/linije.c /^ int running = 1;$/;" m struct:State typeref:typename:int file:
+running /home/strajder/src/linije/linije.c /^ int running;$/;" m struct:State typeref:typename:int file:
+running /home/strajder/src/linije/linije.c /^static int running = 1;$/;" v typeref:typename:int file:
+running /home/strajder/src/linije/linije.c /^static int running = 1;$/;" v typeref:typename:int file:
+sampler_bindings /usr/local/include/SDL3/SDL_render.h /^ const SDL_GPUTextureSamplerBinding *sampler_bindings; \/**< Additional fragment samplers t/;" m struct:SDL_GPURenderStateDesc typeref:typename:const SDL_GPUTextureSamplerBinding *
+score /home/strajder/src/linije/linije.c /^ unsigned int score = 0;$/;" m struct:State typeref:typename:unsigned int file:
+score /home/strajder/src/linije/linije.c /^ unsigned int score = 0;$/;" m struct:State typeref:typename:unsigned int file:
+score /home/strajder/src/linije/linije.c /^ unsigned int score = 0;$/;" m struct:State typeref:typename:unsigned int file:
+score /home/strajder/src/linije/linije.c /^ unsigned int score;$/;" m struct:State typeref:typename:unsigned int file:
+score /home/strajder/src/linije/linije.c /^static unsigned int score = 0;$/;" v typeref:typename:unsigned int file:
+score /home/strajder/src/linije/linije.c /^static unsigned int score = 0;$/;" v typeref:typename:unsigned int file:
+score /home/strajder/src/linije/linije.c /^static unsigned int score = 0;$/;" v typeref:typename:unsigned int file:
+screen_coord_to_grid_coord /home/strajder/src/linije/linije.c /^screen_coord_to_grid_coord(const int x, const int y, const float startx,$/;" f typeref:typename:void
+screen_coord_to_grid_coord /home/strajder/src/linije/linije.c /^screen_coord_to_grid_coord(struct State* state, const int x, const int y, const float startx,$/;" f typeref:typename:void
+screen_coord_to_grid_coord /home/strajder/src/linije/linije.c /^screen_coord_to_grid_coord(struct State* state, const int x, const int y,$/;" f typeref:typename:void
+screen_coord_to_grid_coordF /home/strajder/src/linije/linije.c /^screen_coord_to_grid_coordF(const float x, const float y, const float startx,$/;" f typeref:typename:void
+screen_coord_to_grid_coordF /home/strajder/src/linije/linije.c /^screen_coord_to_grid_coordF(const float x, const float y,$/;" f typeref:typename:void
+screen_coord_to_grid_coordF /home/strajder/src/linije/linije.c /^screen_coord_to_grid_coordF(struct State* state, const float x, const float y, const float start/;" f typeref:typename:void
+screen_coord_to_grid_coordF /home/strajder/src/linije/linije.c /^screen_coord_to_grid_coordF(struct State* state, const float x, const float y,$/;" f typeref:typename:void
+screen_height /home/strajder/src/lav-sdl/lav-sdl.c /^static int screen_height = DEFAULT_HEIGHT;$/;" v typeref:typename:int file:
+screen_height /home/strajder/src/linije/linije.c /^ int screen_height = DEFAULT_HEIGHT;$/;" m struct:State typeref:typename:int file:
+screen_height /home/strajder/src/linije/linije.c /^ int screen_height = DEFAULT_HEIGHT;$/;" m struct:State typeref:typename:int file:
+screen_height /home/strajder/src/linije/linije.c /^ int screen_height = DEFAULT_HEIGHT;$/;" m struct:State typeref:typename:int file:
+screen_height /home/strajder/src/linije/linije.c /^ int screen_height;$/;" m struct:State typeref:typename:int file:
+screen_height /home/strajder/src/linije/linije.c /^static int screen_height = DEFAULT_HEIGHT;$/;" v typeref:typename:int file:
+screen_height /home/strajder/src/linije/linije.c /^static int screen_height = DEFAULT_HEIGHT;$/;" v typeref:typename:int file:
+screen_width /home/strajder/src/lav-sdl/lav-sdl.c /^static int screen_width = DEFAULT_WIDTH; \/* Logical *\/$/;" v typeref:typename:int file:
+screen_width /home/strajder/src/linije/linije.c /^ int screen_width = DEFAULT_WIDTH; \/* Logical *\/$/;" m struct:State typeref:typename:int file:
+screen_width /home/strajder/src/linije/linije.c /^ int screen_width = DEFAULT_WIDTH; \/* Logical *\/$/;" m struct:State typeref:typename:int file:
+screen_width /home/strajder/src/linije/linije.c /^ int screen_width = DEFAULT_WIDTH; \/* Logical *\/$/;" m struct:State typeref:typename:int file:
+screen_width /home/strajder/src/linije/linije.c /^ int screen_width; \/* Logical *\/$/;" m struct:State typeref:typename:int file:
+screen_width /home/strajder/src/linije/linije.c /^static int screen_width = DEFAULT_WIDTH; \/* Logical *\/$/;" v typeref:typename:int file:
+screen_width /home/strajder/src/linije/linije.c /^static int screen_width = DEFAULT_WIDTH; \/* Logical *\/$/;" v typeref:typename:int file:
+selected /home/strajder/src/linije/linije.c /^static SDL_FPoint selected;$/;" v typeref:typename:SDL_FPoint file:
+selected /home/strajder/src/linije/linije.c /^static SDL_Point selected;$/;" v typeref:typename:SDL_Point file:
+selection_end /home/strajder/src/linije/linije.c /^ SDL_FPoint selection_start, selection_end;$/;" m struct:State typeref:typename:SDL_FPoint file:
+selection_end /home/strajder/src/linije/linije.c /^ SDL_FPoint selection_start, selection_end;$/;" m struct:State typeref:typename:SDL_FPoint file:
+selection_end /home/strajder/src/linije/linije.c /^static SDL_FPoint selection_start, selection_end;$/;" v typeref:typename:SDL_FPoint file:
+selection_start /home/strajder/src/linije/linije.c /^ SDL_FPoint selection_start, selection_end;$/;" m struct:State typeref:typename:SDL_FPoint file:
+selection_start /home/strajder/src/linije/linije.c /^ SDL_FPoint selection_start, selection_end;$/;" m struct:State typeref:typename:SDL_FPoint file:
+selection_start /home/strajder/src/linije/linije.c /^static SDL_FPoint selection_start, selection_end;$/;" v typeref:typename:SDL_FPoint file:
+short_dist /home/strajder/src/linije/linije.c /^ int short_dist; \/* length of shortest path so far *\/$/;" m struct:Cell typeref:typename:int file:
+short_dist /home/strajder/tmp/pathfind/pf2.c /^ int short_dist; \/* length of shortest path so far *\/$/;" m struct:Cell typeref:typename:int file:
+short_source /home/strajder/src/linije/linije.c /^ struct Cell* short_source; \/* previous cell in shortest path *\/$/;" m struct:Cell typeref:struct:Cell * file:
+short_source /home/strajder/tmp/pathfind/pf2.c /^ struct Cell* short_source; \/* previous cell in shortest path *\/$/;" m struct:Cell typeref:struct:Cell * file:
+sprites /home/strajder/src/lav-sdl/lav-sdl.c /^static SDL_Texture* sprites = NULL;$/;" v typeref:typename:SDL_Texture * file:
+sprites /home/strajder/src/linije/linije.c /^ SDL_Texture* sprites = NULL;$/;" m struct:State typeref:typename:SDL_Texture * file:
+sprites /home/strajder/src/linije/linije.c /^ SDL_Texture* sprites = NULL;$/;" m struct:State typeref:typename:SDL_Texture * file:
+sprites /home/strajder/src/linije/linije.c /^ SDL_Texture* sprites = NULL;$/;" m struct:State typeref:typename:SDL_Texture * file:
+sprites /home/strajder/src/linije/linije.c /^ SDL_Texture* sprites;$/;" m struct:State typeref:typename:SDL_Texture * file:
+sprites /home/strajder/src/linije/linije.c /^static SDL_Texture* sprites = NULL;$/;" v typeref:typename:SDL_Texture * file:
+start /home/strajder/src/lav-sdl/lav-sdl.c /^static SDL_Point hero, start, end;$/;" v typeref:typename:SDL_Point file:
+start /home/strajder/src/linije/linije.c /^ SDL_FPoint start;$/;" m struct:AnimationState typeref:typename:SDL_FPoint file:
+start /home/strajder/src/linije/linije.c /^ SDL_Point start;$/;" m struct:AnimationState typeref:typename:SDL_Point file:
+start /home/strajder/src/linije/linije.c /^static SDL_Point hero, start, end;$/;" v typeref:typename:SDL_Point file:
+starting /home/strajder/src/linije/linije.c /^ int starting;$/;" m struct:Cell typeref:typename:int file:
+starting /home/strajder/tmp/pathfind/pf2.c /^ int starting;$/;" m struct:Cell typeref:typename:int file:
+state /home/strajder/src/lav-sdl/lav-sdl.c /^static int state = STATE_SEARCHING_PAUSED;$/;" v typeref:typename:int file:
+state /home/strajder/src/linije/linije.c /^ int state = STATE_IDLE;$/;" m struct:State typeref:typename:int file:
+state /home/strajder/src/linije/linije.c /^ int state = STATE_IDLE;$/;" m struct:State typeref:typename:int file:
+state /home/strajder/src/linije/linije.c /^ int state = STATE_IDLE;$/;" m struct:State typeref:typename:int file:
+state /home/strajder/src/linije/linije.c /^ int state;$/;" m struct:State typeref:typename:int file:
+state /home/strajder/src/linije/linije.c /^static int state = STATE_IDLE;$/;" v typeref:typename:int file:
+state /home/strajder/src/linije/linije.c /^static int state = STATE_SEARCHING_PAUSED;$/;" v typeref:typename:int file:
+state_descriptions /home/strajder/src/lav-sdl/lav-sdl.c /^const char* state_descriptions[] = {$/;" v typeref:typename:const char * []
+state_descriptions /home/strajder/src/linije/linije.c /^const char* state_descriptions[] = {$/;" v typeref:typename:const char * []
+step /home/strajder/src/lav-sdl/lav-sdl.c /^ int step;$/;" m struct:AnimationState typeref:typename:int file:
+step /home/strajder/src/linije/linije.c /^ int step;$/;" m struct:AnimationState typeref:typename:int file:
+step_animation /home/strajder/src/lav-sdl/lav-sdl.c /^step_animation(void)$/;" f typeref:typename:void
+step_animation /home/strajder/src/linije/linije.c /^step_animation(struct State* state)$/;" f typeref:typename:void
+step_animation /home/strajder/src/linije/linije.c /^step_animation(void)$/;" f typeref:typename:void
+storage_buffers /usr/local/include/SDL3/SDL_render.h /^ SDL_GPUBuffer *const *storage_buffers; \/**< Storage buffers to bind when this render s/;" m struct:SDL_GPURenderStateDesc typeref:typename:SDL_GPUBuffer * const *
+storage_textures /usr/local/include/SDL3/SDL_render.h /^ SDL_GPUTexture *const *storage_textures; \/**< Storage textures to bind when this render /;" m struct:SDL_GPURenderStateDesc typeref:typename:SDL_GPUTexture * const *
+ter12_texture /home/strajder/src/lav-sdl/lav-sdl.c /^static SDL_Texture* ter12_texture = NULL;$/;" v typeref:typename:SDL_Texture * file:
+ter12_texture /home/strajder/src/linije/linije.c /^ SDL_Texture* ter12_texture = NULL;$/;" m struct:State typeref:typename:SDL_Texture * file:
+ter12_texture /home/strajder/src/linije/linije.c /^ SDL_Texture* ter12_texture = NULL;$/;" m struct:State typeref:typename:SDL_Texture * file:
+ter12_texture /home/strajder/src/linije/linije.c /^ SDL_Texture* ter12_texture;$/;" m struct:State typeref:typename:SDL_Texture * file:
+ter12_texture /home/strajder/src/linije/linije.c /^static SDL_Texture* ter12_texture = NULL;$/;" v typeref:typename:SDL_Texture * file:
+tex_coord /usr/local/include/SDL3/SDL_render.h /^ SDL_FPoint tex_coord; \/**< Normalized texture coordinates, if needed *\/$/;" m struct:SDL_Vertex typeref:typename:SDL_FPoint
+text_scale_factor /home/strajder/src/lav-sdl/lav-sdl.c /^static float text_scale_factor = 2.0f;$/;" v typeref:typename:float file:
+text_scale_factor /home/strajder/src/linije/linije.c /^ float text_scale_factor = 2.0f;$/;" m struct:State typeref:typename:float file:
+text_scale_factor /home/strajder/src/linije/linije.c /^ float text_scale_factor = 2.0f;$/;" m struct:State typeref:typename:float file:
+text_scale_factor /home/strajder/src/linije/linije.c /^ float text_scale_factor = 2.0f;$/;" m struct:State typeref:typename:float file:
+text_scale_factor /home/strajder/src/linije/linije.c /^ float text_scale_factor;$/;" m struct:State typeref:typename:float file:
+text_scale_factor /home/strajder/src/linije/linije.c /^static float text_scale_factor = 2.0f;$/;" v typeref:typename:float file:
+try_load /home/strajder/src/lav-sdl/lav-sdl.c /^try_load(const char* filename)$/;" f typeref:typename:SDL_Surface *
+try_load /home/strajder/src/linije/linije.c /^try_load(const char* filename)$/;" f typeref:typename:SDL_Surface *
+up /home/strajder/src/linije/linije.c /^ struct Cell* up;$/;" m struct:Cell typeref:struct:Cell * file:
+up /home/strajder/tmp/pathfind/pf2.c /^ struct Cell* up;$/;" m struct:Cell typeref:struct:Cell * file:
+version /usr/local/include/SDL3/SDL_render.h /^ Uint32 version; \/**< the version of this interface *\/$/;" m struct:SDL_GPURenderStateDesc typeref:typename:Uint32
+w /usr/local/include/SDL3/SDL_render.h /^ int w; \/**< The width of the texture, read-only. *\/$/;" m struct:SDL_Texture typeref:typename:int
+width /home/strajder/src/lav-sdl/lav-sdl.c /^ int width;$/;" m struct:Labyrinth typeref:typename:int file:
+width /home/strajder/src/linije/linije.c /^ int width;$/;" m struct:Grid typeref:typename:int file:
+width /home/strajder/src/linije/linije.c /^ int width;$/;" m struct:Labyrinth typeref:typename:int file:
+window /home/strajder/src/lav-sdl/lav-sdl.c /^static SDL_Window* window = NULL;$/;" v typeref:typename:SDL_Window * file:
+window /home/strajder/src/linije/linije.c /^ SDL_Window* window = NULL;$/;" m struct:State typeref:typename:SDL_Window * file:
+window /home/strajder/src/linije/linije.c /^ SDL_Window* window = NULL;$/;" m struct:State typeref:typename:SDL_Window * file:
+window /home/strajder/src/linije/linije.c /^ SDL_Window* window = NULL;$/;" m struct:State typeref:typename:SDL_Window * file:
+window /home/strajder/src/linije/linije.c /^ SDL_Window* window;$/;" m struct:State typeref:typename:SDL_Window * file:
+window /home/strajder/src/linije/linije.c /^static SDL_Window* window = NULL;$/;" v typeref:typename:SDL_Window * file:
+x /home/strajder/src/linije/linije.c /^ int x;$/;" m struct:Coord typeref:typename:int file:
+x /home/strajder/tmp/pathfind/pf2.c /^ int x;$/;" m struct:Coord typeref:typename:int file:
+y /home/strajder/src/linije/linije.c /^ int y;$/;" m struct:Coord typeref:typename:int file:
+y /home/strajder/tmp/pathfind/pf2.c /^ int y;$/;" m struct:Coord typeref:typename:int file:
diff --git a/ter12.png b/ter12.png
Бинарне датотеке �е разликују.
diff --git a/ter12.xcf.xz b/ter12.xcf.xz
Бинарне датотеке �е разликују.
diff --git a/version b/version
@@ -0,0 +1 @@
+0.1
diff --git a/version.h.in b/version.h.in
@@ -0,0 +1,7 @@
+/* This program is licensed under the terms of GNU GPL v3 or (at your option)
+ * any later version. Copyright (C) 2025 Страхиња Радић.
+ * See the file LICENSE for exact copyright and license details. */
+
+#define PROGRAM_NAME "linije"
+#define DATE "%DATE%"
+#define VERSION "%VERSION%"