чување 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
+ ~<mh.h
+>
+
+10
+ ~<dg.h
+>
+
+11
+ ~<dio.h
+>
+
+12
+ ~<dlib.h
+>
+
+13
+ ~<time.h
+>
+
+14
+ ~<unid.h
+>
+
+16
+ ~"lol.h
+"
+
+17
+ ~"vsi.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
+ "lije"
+
+ )
+
+42
+ #TER12_WIDTH
+ 6
+
+ )
+
+43
+ #TER12_HEIGHT
+ 12
+
+ )
+
+44
+ #WIN_TITLE
+ "Lije"
+
+ )
+
+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_ds
+[][4] = {
+
+88 cڡ *
+ ge_destis
+[] = {
+
+96 cڡ *
+ ghp_xt
+[] = {
+
+99 "Vsi "
+VERSION
+,
+
+111
+NULL
+
+
+115
+ sAnimiS
+ {
+
+116
+SDL_FPot
+
+ mt
+;
+
+117
+SDL_FPot
+
+ mposi
+;
+
+118
+SDL_FPot
+
+ md
+;
+
+119
+SDL_FPot
+
+ md
+;
+
+120
+ maive
+;
+
+121
+ m
+;
+
+122
+ mf_
+;
+
+125
+ sCl
+ {
+
+126
+ memy
+;
+
+127
+ mtg
+;
+
+128
+ mdg
+;
+
+129
+ mth
+;
+
+130
+SDL_FPot
+
+ mcods
+;
+
+131
+ mcڋs
+;
+
+132
+Cl
+*
+ m
+;
+
+133
+Cl
+*
+ mup
+;
+
+134
+Cl
+*
+ mright
+;
+
+135
+Cl
+*
+ mdown
+;
+
+136
+Cl
+*
+ mth_sour
+;
+
+137
+Cl
+*
+ mth_xt
+;
+
+138
+ mth_di
+;
+
+141
+ sS
+ {
+
+142
+AnimiS
+
+ mimi
+;
+
+143
+Cl
+*
+ mgrid
+;
+
+144
+ mloti_por
+;
+
+145
+SDL_Pot
+*
+ mloti_ack
+;
+
+146
+SDL_FPot
+
+ mpor
+;
+
+147
+ m_s_
+;
+
+148
+ mdiy_width
+;
+
+149
+ mdiy_height
+;
+
+150
+ mfu_sn
+;
+
+151
+ mhp_shown
+;
+
+152
+ mmode
+;
+
+153
+Cl
+*
+ mth_t
+;
+
+154
+Cl
+*
+ mth_d
+;
+
+155
+ mdw
+;
+
+156
+SDL_Rd
+*
+ mnd
+;
+
+157
+ mrug
+;
+
+158
+ msn_width
+;
+
+159
+ msn_height
+;
+
+160
+ msce
+;
+
+161
+SDL_FPot
+
+ mi_t
+,
+ mi_d
+;
+
+162
+SDL_Textu
+*
+ mres
+;
+
+163
+SDL_Textu
+*
+ mr12_xtu
+;
+
+164
+SDL_Textu
+*
+ mbackground
+;
+
+165
+SDL_Wdow
+*
+ mwdow
+;
+
+166
+ mxt_s_
+;
+
+169
+assign_potFF
+(cڡ
+SDL_FPot
+*
+om
+, SDL_FPot*
+to
+);
+
+170
+assign_potIF
+(cڡ
+SDL_Pot
+*
+om
+,
+SDL_FPot
+*
+to
+);
+
+171
+assign_pot_xyIF
+(cڡ
+x
+, cڡ
+y
+,
+SDL_FPot
+*
+to
+);
+
+172
+lcuϋ_d
+(
+S
+*
+e
+);
+
+173
+lcuϋ_grid_ig
+(cڡ
+S
+*
+e
+, *
+sx
+, *
+sy
+);
+
+174
+lcuϋ_diy_size
+(
+S
+*
+e
+);
+
+175
+check_five
+(
+S
+*
+e
+,
+Cl
+*
+c
+);
+
+176
+nup
+(
+S
+*
+e
+);
+
+177
+do_ex
+(cڡ
+code
+,
+S
+*
+e
+);
+
+178
+dw
+(
+S
+*
+e
+);
+
+179
+dw_background
+(
+S
+*
+e
+,
+SDL_FRe
+*
+bg_
+);
+
+180
+dw_hp_dlog
+(
+S
+*
+e
+);
+
+181
+dw_xt
+(
+S
+*
+e
+, cڡ
+x
+, cڡ
+y
+,
+
+182 cڡ
+ft_width
+, cڡ
+ft_height
+,
+SDL_Textu
+*
+ft_x
+,
+
+183 cڡ *
+xt
+, ...);
+
+184
+fl_t
+(
+S
+*
+e
+);
+
+185
+fd_sh܋_th
+(
+Cl
+*
+c
+, Cl*
+sour
+, cڡ
+di
+);
+
+186
+g_re_xy
+(cڡ
+
+, *
+x
+, *
+y
+);
+
+187
+grid_cod_to_sn_cod
+(cڡ
+S
+*
+e
+, cڡ
+x
+,
+
+188 cڡ
+y
+, cڡ
+tx
+, cڡ
+ty
+, *
+to_x
+,
+
+189 *
+to_y
+);
+
+190
+grid_cod_to_sn_codF
+(cڡ
+S
+*
+e
+, cڡ
+x
+,
+
+191 cڡ
+y
+, cڡ
+tx
+, cڡ
+ty
+, *
+to_x
+,
+
+192 *
+to_y
+);
+
+193
+hd_ick
+(
+S
+*
+e
+);
+
+194
+hd_evt
+(
+S
+*
+e
+,
+SDL_Evt
+*
+evt
+);
+
+195
+_
+(
+Cl
+*
+c
+, cڡ
+SDL_FPot
+*
+cods
+);
+
+196
+_e
+(
+S
+*
+e
+);
+
+197
+ld_xtus
+(
+S
+*
+e
+);
+
+198
+loti_p
+(
+S
+*
+e
+,
+SDL_Pot
+*
+loti
+);
+
+199
+loti_push
+(
+S
+*
+e
+, cڡ
+SDL_Pot
+*
+loti
+);
+
+200
+mk_th
+(
+Cl
+*
+c
+);
+
+201
+xt_
+(
+S
+*
+e
+);
+
+202
+sb
+(cڡ
+S
+*
+e
+, cڡ
+x
+, cڡ
+y
+);
+
+203
+t_mrix
+(cڡ
+Cl
+*
+M
+);
+
+204
+t_th
+(
+Cl
+*
+c
+);
+
+205
+t
+(
+S
+*
+e
+);
+
+206
+t_th
+(
+Cl
+*
+grid
+);
+
+207
+sn_cod_to_grid_cod
+(
+S
+*
+e
+, cڡ
+x
+, cڡ
+y
+,
+
+208 cڡ
+tx
+, cڡ
+ty
+, *
+to_x
+, *
+to_y
+);
+
+209
+sn_cod_to_grid_codF
+(
+S
+*
+e
+, cڡ
+x
+,
+
+210 cڡ
+y
+, cڡ
+tx
+, cڡ
+ty
+, *
+to_x
+,
+
+211 *
+to_y
+);
+
+212
+_imi
+(
+S
+*
+e
+);
+
+213
+SDL_Sur
+*
+y_ld
+(cڡ *
+fame
+);
+
+216
+ $assign_potFF
+(cڡ
+SDL_FPot
+*
+om
+, SDL_FPot*
+to
+)
+
+218
+ `as
+((
+om
+ !
+NULL
+&& (
+to
+ != NULL));
+
+219
+to
+->
+x
+ = ()
+om
+->x;
+
+220
+to
+->
+y
+ = ()
+om
+->y;
+
+221
+ }
+}
+
+224
+ $assign_potIF
+(cڡ
+SDL_Pot
+*
+om
+,
+SDL_FPot
+*
+to
+)
+
+226
+ `as
+((
+om
+ !
+NULL
+&& (
+to
+ != NULL));
+
+227
+to
+->
+x
+ = ()
+om
+->x;
+
+228
+to
+->
+y
+ = ()
+om
+->y;
+
+229
+ }
+}
+
+232
+ $assign_pot_xyIF
+(cڡ
+x
+, cڡ
+y
+,
+SDL_FPot
+*
+to
+)
+
+234
+ `as
+(
+to
+ !
+NULL
+);
+
+235
+to
+->
+x
+ = ()x;
+
+236
+to
+->
+y
+ = ()y;
+
+237
+ }
+}
+
+240
+ $lcuϋ_d
+(
+S
+*
+e
+)
+
+242
+AnimiS
+*
+imi
+;
+
+244
+ `as
+(
+e
+ !
+NULL
+);
+
+245
+imi
+ = &
+e
+->animation;
+
+246
+imi
+->
+d
+.
+x
+
+
+247
+ `bsf
+(
+imi
+->
+d
+.
+x
+ -nimi->
+t
+.x/
+ANIM_STEPS
+;
+
+248 i(
+imi
+->
+d
+.
+x
+ <nimi->
+t
+.x)
+
+249
+imi
+->
+d
+.
+x
+ *= -1;
+
+250
+imi
+->
+d
+.
+y
+
+
+251
+ `bsf
+(
+imi
+->
+d
+.
+y
+ -nimi->
+t
+.y/
+ANIM_STEPS
+;
+
+252 i(
+imi
+->
+d
+.
+y
+ <nimi->
+t
+.y)
+
+253
+imi
+->
+d
+.
+y
+ *= -1;
+
+254
+ `SDL_LogDebug
+(
+SDL_LOG_CATEGORY_APPLICATION
+,
+
+255 "lcuϋ_d: (%0.2f, %0.2f)",
+imi
+->
+d
+.
+x
+,
+
+256
+imi
+->
+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
+->
+sn_width
+ / 2;
+
+266
+cy
+ =
+e
+->
+sn_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ϋ_diy_size
+(
+S
+*
+e
+)
+
+275
+ `as
+(
+e
+ !
+NULL
+);
+
+276 i(!
+ `SDL_GRdOuutSize
+(
+e
+->
+nd
+, &e->
+diy_width
+,
+
+277 &
+e
+->
+diy_height
+))
+
+279
+ `SDL_LogE
+(
+SDL_LOG_CATEGORY_ERROR
+,
+
+281
+ `do_ex
+(1,
+e
+);
+
+283
+ `SDL_LogDebug
+(
+SDL_LOG_CATEGORY_APPLICATION
+,
+
+284 "ouudiy size: (%d, %d)",
+e
+->
+diy_width
+,
+
+285
+e
+->
+diy_height
+);
+
+286
+ }
+}
+
+289
+ $check_five
+(
+S
+*
+e
+,
+Cl
+*
+c
+)
+
+291
+Cl
+*
+cut
+ =
+NULL
+;
+
+292
+SDL_FPot
+
+t
+,
+d
+;
+
+293
+x
+,
+y
+,
+n
+;
+
+294
+i
+;
+
+296
+i
+ = 0;
+
+297
+check_five_lo
+:
+
+298
+ `assign_potFF
+(&
+c
+->
+cods
+, &
+t
+);
+
+299
+ `assign_potFF
+(&
+c
+->
+cods
+, &
+d
+);
+
+300
+x
+ =
+c
+->
+cods
+.x;
+
+301
+y
+ =
+c
+->
+cods
+.y;
+
+302
+ `SDL_LogDebug
+(
+SDL_LOG_CATEGORY_APPLICATION
+, "Deltas: %d, %d",
+
+303
+check_five_ds
+[
+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_pot_xyIF
+(
+x
+,
+y
+, &
+t
+);
+
+312
+n
+++;
+
+316
+x
+ +
+check_five_ds
+[
+i
+][0];
+
+317
+y
+ +
+check_five_ds
+[
+i
+][1];
+
+319
+x
+ =
+c
+->
+cods
+.x +
+check_five_ds
+[
+i
+][2];
+
+320
+y
+ =
+c
+->
+cods
+.y +
+check_five_ds
+[
+i
+][3];
+
+321
+ `SDL_LogDebug
+(
+SDL_LOG_CATEGORY_APPLICATION
+, "Deltas: %d, %d",
+
+322
+check_five_ds
+[
+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_pot_xyIF
+(
+x
+,
+y
+, &
+d
+);
+
+330
+n
+++;
+
+334
+x
+ +
+check_five_ds
+[
+i
+][2];
+
+335
+y
+ +
+check_five_ds
+[
+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_ds
+[
+i
+][3],
+
+347
+check_five_ds
+[
+i
+][3]);
+
+348
+ `SDL_LogDebug
+(
+SDL_LOG_CATEGORY_APPLICATION
+,
+
+350
+t
+.
+x
+,
+d
+.x,
+check_five_ds
+[
+i
+][2],
+
+351
+check_five_ds
+[
+i
+][2]);
+
+352
+x
+ =
+t
+.x;
+
+353
+y
+ =
+t
+.y;
+
+356
+cut
+ = &
+e
+->
+grid
+[
+ `INDEX
+(
+x
+,
+y
+)];
+
+357
+ `SDL_LogDebug
+(
+SDL_LOG_CATEGORY_APPLICATION
+,
+
+359
+cut
+->
+cods
+.
+x
+,
+
+360
+cut
+->
+cods
+.
+y
+,
+
+361
+x
+,
+y
+,
+
+362
+_mes
+[
+cut
+->
+cڋs
+]);
+
+363
+cut
+->
+cڋs
+ =
+CELL_EMPTY
+;
+
+364
+cut
+->
+emy
+ = 1;
+
+365
+ `SDL_LogDebug
+(
+SDL_LOG_CATEGORY_APPLICATION
+,
+
+367
+cut
+->
+cods
+.
+x
+,
+
+368
+cut
+->
+cods
+.
+y
+,
+
+369
+_mes
+[
+cut
+->
+cڋs
+]);
+
+370
+x
+ +
+check_five_ds
+[
+i
+][2];
+
+371
+y
+ +
+check_five_ds
+[
+i
+][3];
+
+373 !((
+x
+ =
+d
+.x +
+check_five_ds
+[
+i
+][2])
+
+374 && (
+y
+ =
+d
+.y +
+check_five_ds
+[
+i
+][3])));
+
+376
+e
+->
+sce
+ +
+n
+ *
+POP_STRING_CELL_VALUE
+;
+
+377
+check_five_fish
+;
+
+381
+ `SDL_LogDebug
+(
+SDL_LOG_CATEGORY_APPLICATION
+,
+
+382 "check_five: = %d,مpg",
+n
+);
+
+384
+i
+++;
+
+385 i(
+i
+ < (
+check_five_ds
+) / (check_five_deltas[0]))
+
+386
+check_five_lo
+;
+
+388
+ `fl_t
+(
+e
+);
+
+390
+check_five_fish
+:
+
+391
+e
+->
+mode
+ =
+STATE_IDLE
+;
+
+392
+ }
+}
+
+395
+ $nup
+(
+S
+*
+e
+)
+
+397
+ `as
+(
+e
+ !
+NULL
+);
+
+399
+ `
+(
+e
+->
+loti_ack
+);
+
+400
+ `
+(
+e
+->
+grid
+);
+
+402 i(
+e
+->
+background
+)
+
+403
+ `SDL_DeroyTextu
+(
+e
+->
+background
+);
+
+404 i(
+e
+->
+r12_xtu
+)
+
+405
+ `SDL_DeroyTextu
+(
+e
+->
+r12_xtu
+);
+
+406 i(
+e
+->
+res
+)
+
+407
+ `SDL_DeroyTextu
+(
+e
+->
+res
+);
+
+408 i(
+e
+->
+nd
+)
+
+409
+ `SDL_DeroyRd
+(
+e
+->
+nd
+);
+
+410 i(
+e
+->
+wdow
+)
+
+411
+ `SDL_DeroyWdow
+(
+e
+->
+wdow
+);
+
+413
+ `SDL_Qu
+();
+
+414
+ }
+}
+
+417
+ $do_ex
+(cڡ
+code
+,
+S
+*
+e
+)
+
+419
+ `nup
+(
+e
+);
+
+420
+ `ex
+(
+code
+);
+
+421
+ }
+}
+
+424
+ $dw
+(
+S
+*
+e
+)
+
+426
+Cl
+*
+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_SRdDwC
+(
+e
+->
+nd
+, 0, 0, 0,
+SDL_ALPHA_OPAQUE
+);
+
+445
+ `SDL_RdCˬ
+(
+e
+->
+nd
+);
+
+448 i(!
+e
+->
+background
+)
+
+449
+ `dw_background
+(
+e
+, &
+bg_
+);
+
+452
+de_
+.
+x
+ =
+tx
+;
+
+453
+de_
+.
+y
+ =
+ty
+;
+
+454
+de_
+.
+w
+ =
+bg_
+.w;
+
+455
+de_
+.
+h
+ =
+bg_
+.h;
+
+456
+ `SDL_RdLe
+(
+e
+->
+nd
+, 1, 1, 50, 50);
+
+457
+ `SDL_RdTextu
+(
+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_re_xy
+(
+c
+->
+cڋs
+, &
+x
+, &
+y
+);
+
+473
+_
+.
+x
+ =
+x
+;
+
+474
+_
+.
+y
+ =
+y
+;
+
+475 i(
+c
+->
+th
+)
+
+477
+ `grid_cod_to_sn_cod
+(
+e
+,
+
+478
+e
+->
+imi
+.
+posi
+.
+x
+,
+
+479
+e
+->
+imi
+.
+posi
+.
+y
+,
+tx
+ + 1,
+
+480
+ty
+ + 1, &
+drx
+, &
+dry
+);
+
+484
+ `grid_cod_to_sn_cod
+(
+e
+,
+x
+,
+y
+,
+
+485
+tx
+ + 1,
+ty
+ + 1, &
+drx
+, &
+dry
+);
+
+487
+de_
+.
+x
+ =
+drx
+;
+
+488
+de_
+.
+y
+ =
+dry
+;
+
+489
+ `SDL_RdTextu
+(
+e
+->
+nd
+, s->
+res
+,
+
+490 &
+_
+, &
+de_
+);
+
+494 i(
+e
+->
+i_t
+.
+x
+ != -1)
+
+496
+ `g_re_xy
+(
+CELL_SELECTED
+, &
+x
+, &
+y
+);
+
+497
+_
+.
+x
+ =
+x
+;
+
+498
+_
+.
+y
+ =
+y
+;
+
+499
+ `grid_cod_to_sn_cod
+(
+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_RdTextu
+(
+e
+->
+nd
+, s->
+res
+, &
+_
+,
+
+505 &
+de_
+);
+
+509
+ `dw_xt
+(
+e
+, 0,
+
+510
+e
+->
+sn_height
+ - s->
+xt_s_
+ *
+TER12_HEIGHT
+,
+
+511
+TER12_WIDTH
+,
+TER12_HEIGHT
+,
+e
+->
+r12_xtu
+,
+
+512 "Sce: %06u F1 = H Stus: %s",
+e
+->
+sce
+,
+
+513
+e_destis
+[
+e
+->
+mode
+]);
+
+515 i(
+e
+->
+hp_shown
+)
+
+516
+ `dw_hp_dlog
+(
+e
+);
+
+522
+ `SDL_RdP
+(
+e
+->
+nd
+);
+
+523
+ }
+}
+
+526
+ $dw_background
+(
+S
+*
+e
+,
+SDL_FRe
+*
+bg_
+)
+
+528 cڡ
+SDL_DiyMode
+*
+mode
+;
+
+529
+SDL_FRe
+
+_
+,
+de_
+;
+
+530
+SDL_DiyID
+
+diy
+;
+
+531
+x
+,
+y
+;
+
+532
+drx
+,
+dry
+;
+
+533
+x
+,
+y
+;
+
+535
+ `as
+((
+e
+ !
+NULL
+&& (
+bg_
+ != NULL));
+
+536
+ `as
+(
+e
+->
+_s_
+ != 0.0f);
+
+538 i((
+diy
+ =
+ `SDL_GDiyFWdow
+(
+e
+->
+wdow
+)) == 0)
+
+540
+ `SDL_LogE
+(
+SDL_LOG_CATEGORY_ERROR
+,
+
+541 "SDL_GDiyFWdow faed: %s",
+ `SDL_GE
+());
+
+542
+ `do_ex
+(1,
+e
+);
+
+545 i((
+mode
+ =
+ `SDL_GCutDiyMode
+(
+diy
+)=
+NULL
+)
+
+547
+ `SDL_LogE
+(
+SDL_LOG_CATEGORY_ERROR
+,
+
+548 "SDL_GCutDiyModed: %s",
+ `SDL_GE
+());
+
+549
+ `do_ex
+(1,
+e
+);
+
+552
+e
+->
+background
+ =
+ `SDL_CeTextu
+(e->
+nd
+,
+mode
+->
+fm
+,
+
+553
+SDL_TEXTUREACCESS_TARGET
+,
+bg_
+->
+w
+, bg_->
+h
+);
+
+554 i(!
+e
+->
+background
+)
+
+556
+ `SDL_LogE
+(
+SDL_LOG_CATEGORY_ERROR
+,
+
+557 "SDL_CeTextu faed: %s",
+ `SDL_GE
+());
+
+558
+ `do_ex
+(1,
+e
+);
+
+560 i(!
+ `SDL_SRdTg
+(
+e
+->
+nd
+, s->
+background
+))
+
+562
+ `SDL_LogE
+(
+SDL_LOG_CATEGORY_ERROR
+,
+
+563 "SDL_SRdTg faed: %s",
+ `SDL_GE
+());
+
+564
+ `do_ex
+(1,
+e
+);
+
+567
+de_
+.
+w
+ =
+e
+->
+_s_
+ *
+CELL_SIZE
+;
+
+568
+de_
+.
+h
+ =
+e
+->
+_s_
+ *
+CELL_SIZE
+;
+
+569
+ `g_re_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_cod_to_sn_cod
+(
+e
+,
+x
+,
+y
+, 0.0f, 0.0f,
+
+578 &
+drx
+, &
+dry
+);
+
+579
+de_
+.
+x
+ =
+e
+->
+_s_
+ +
+drx
+;
+
+580
+de_
+.
+y
+ =
+e
+->
+_s_
+ +
+dry
+;
+
+581
+ `SDL_RdTextu
+(
+e
+->
+nd
+, s->
+res
+,
+
+582 &
+_
+, &
+de_
+);
+
+586
+x
+ = -1; x <
+GRID_WIDTH
+; x++)
+
+588
+ `grid_cod_to_sn_cod
+(
+e
+,
+x
+, -1, 0.0f, 0.0f, &
+drx
+, &
+dry
+);
+
+589
+de_
+.
+x
+ =
+e
+->
+_s_
+ +
+drx
+;
+
+590
+de_
+.
+y
+ =
+e
+->
+_s_
+ +
+dry
+;
+
+591
+ `SDL_RdTextu
+(
+e
+->
+nd
+, s->
+res
+, &
+_
+,
+
+592 &
+de_
+);
+
+596
+y
+ = 0; y <
+GRID_WIDTH
+; y++)
+
+598
+ `grid_cod_to_sn_cod
+(
+e
+, -1,
+y
+, 0.0f, 0.0f, &
+drx
+, &
+dry
+);
+
+599
+de_
+.
+x
+ =
+e
+->
+_s_
+ +
+drx
+;
+
+600
+de_
+.
+y
+ =
+e
+->
+_s_
+ +
+dry
+;
+
+601
+ `SDL_RdTextu
+(
+e
+->
+nd
+, s->
+res
+, &
+_
+,
+
+602 &
+de_
+);
+
+605
+ `SDL_SRdDwBndMode
+(
+e
+->
+nd
+,
+SDL_BLENDMODE_NONE
+);
+
+606
+ `SDL_SRdDwC
+(
+e
+->
+nd
+, 255, 255, 255,
+SDL_ALPHA_OPAQUE
+);
+
+608
+ `SDL_SRdTg
+(
+e
+->
+nd
+,
+NULL
+);
+
+609
+ }
+}
+
+612
+ $dw_hp_dlog
+(
+S
+*
+e
+)
+
+614 cڡ **
+php_xt
+ =
+hp_xt
+;
+
+615
+sx
+ =
+e
+->
+sn_width
+ / 2 -
+HELP_DIALOG_WIDTH
+ / 2;
+
+616
+sy
+ =
+e
+->
+sn_height
+ / 2 -
+HELP_DIALOG_HEIGHT
+ / 2;
+
+617
+SDL_FRe
+
+dlog_
+;
+
+619
+dlog_
+.
+x
+ =
+sx
+;
+
+620
+dlog_
+.
+y
+ =
+sy
+;
+
+621
+dlog_
+.
+w
+ =
+HELP_DIALOG_WIDTH
+;
+
+622
+dlog_
+.
+h
+ =
+HELP_DIALOG_HEIGHT
+;
+
+624
+ `SDL_SRdDwBndMode
+(
+e
+->
+nd
+,
+SDL_BLENDMODE_BLEND
+);
+
+625
+ `SDL_SRdDwC
+(
+e
+->
+nd
+, 0, 0, 0, .75 * 255);
+
+626
+ `SDL_RdFlRe
+(
+e
+->
+nd
+, &
+dlog_
+);
+
+628
+ `SDL_SRdDwBndMode
+(
+e
+->
+nd
+,
+SDL_BLENDMODE_NONE
+);
+
+629
+ `SDL_SRdDwC
+(
+e
+->
+nd
+, 255, 255, 255,
+SDL_ALPHA_OPAQUE
+);
+
+630
+ `SDL_RdRe
+(
+e
+->
+nd
+, &
+dlog_
+);
+
+631
+ `SDL_SRdDwC
+(
+e
+->
+nd
+, 0, 0, 0,
+SDL_ALPHA_OPAQUE
+);
+
+632
+dlog_
+.
+x
+--;
+
+633
+dlog_
+.
+y
+--;
+
+634
+dlog_
+.
+w
+ += 2;
+
+635
+dlog_
+.
+h
+ += 2;
+
+636
+ `SDL_RdRe
+(
+e
+->
+nd
+, &
+dlog_
+);
+
+637
+dlog_
+.
+x
+--;
+
+638
+dlog_
+.
+y
+--;
+
+639
+dlog_
+.
+w
+ += 2;
+
+640
+dlog_
+.
+h
+ += 2;
+
+641
+ `SDL_RdRe
+(
+e
+->
+nd
+, &
+dlog_
+);
+
+643 *
+php_xt
+)
+
+645
+ `dw_xt
+(
+e
+,
+
+646
+sx
+ +
+e
+->
+xt_s_
+ * (2 *
+TER12_WIDTH
+),
+
+647
+sy
+
+
+648 + (
+php_xt
+ -
+hp_xt
+ + 1)
+
+649 *
+e
+->
+xt_s_
+
+
+650 * (
+TER12_HEIGHT
+ + 2),
+
+651
+TER12_WIDTH
+,
+TER12_HEIGHT
+,
+e
+->
+r12_xtu
+,
+
+652 *
+php_xt
+);
+
+653
+php_xt
+++;
+
+655
+ }
+}
+
+658
+ $dw_xt
+(
+S
+*
+e
+, cڡ
+x
+, cڡ
+y
+, cڡ
+ft_width
+,
+
+659 cڡ
+ft_height
+,
+SDL_Textu
+*
+ft_x
+, cڡ *
+xt
+, ...)
+
+661
+buf
+[
+PRINT_BUFSIZE
+];
+
+662
+va_li
+
+gs
+;
+
+663 cڡ *
+pbuf
+ =
+NULL
+;
+
+664
+xt
+ = 0;
+
+665
+yt
+ = 0;
+
+666
+SDL_FRe
+
+sour_
+;
+
+667
+SDL_FRe
+
+de_
+;
+
+668
+dex
+ = 0;
+
+669
+chs_r_row
+ = 0;
+
+670
+f_ch
+ = ' ';
+
+671
+ϡ_ch
+ = '~';
+
+672
+x_w
+,
+x_h
+;
+
+674
+ `as
+((
+ft_x
+ !
+NULL
+&& (
+xt
+ != NULL));
+
+675
+ `as
+(
+e
+->
+xt_s_
+ != 0.0f);
+
+676
+ `as
+(
+ft_width
+ != -1);
+
+678
+ `va_t
+(
+gs
+,
+xt
+);
+
+679
+ `vtf
+(
+buf
+, (buf),
+xt
+,
+gs
+);
+
+680
+ `va_d
+(
+gs
+);
+
+682
+sour_
+.
+w
+ =
+ft_width
+;
+
+683
+sour_
+.
+h
+ =
+ft_height
+;
+
+685
+de_
+.
+x
+ = x;
+
+686
+de_
+.
+y
+ = y;
+
+687
+de_
+.
+w
+ =
+e
+->
+xt_s_
+ *
+ft_width
+;
+
+688
+de_
+.
+h
+ =
+e
+->
+xt_s_
+ *
+ft_height
+;
+
+690 i(!
+ `SDL_GTextuSize
+(
+ft_x
+, &
+x_w
+, &
+x_h
+))
+
+692
+ `SDL_LogE
+(
+SDL_LOG_CATEGORY_ERROR
+,
+
+693 "SDL_GTextuSized: %s",
+ `SDL_GE
+());
+
+694
+ `do_ex
+(1,
+e
+);
+
+697
+chs_r_row
+ =
+x_w
+ / (
+ft_width
+ + 1);
+
+699
+pbuf
+ =
+buf
+;
+
+701 *
+pbuf
+)
+
+703 i(*
+pbuf
+ >
+f_ch
+ && *pbu<
+ϡ_ch
+)
+
+705
+dex
+ = ()(*
+pbuf
+ -
+f_ch
+);
+
+707
+xt
+ = 1 +
+dex
+ %
+chs_r_row
+ * (
+ft_width
+ + 1);
+
+708
+yt
+ = 1 +
+dex
+ /
+chs_r_row
+ * (
+ft_height
+ + 1);
+
+713
+sour_
+.
+x
+ =
+xt
+;
+
+714
+sour_
+.
+y
+ =
+yt
+;
+
+716
+ `SDL_RdTextu
+(
+e
+->
+nd
+,
+ft_x
+, &
+sour_
+,
+
+717 &
+de_
+);
+
+719
+de_
+.
+x
+ +
+e
+->
+xt_s_
+ *
+ft_width
+;
+
+721
+pbuf
+++;
+
+724
+ }
+}
+
+727
+ $fl_t
+(
+S
+*
+e
+)
+
+729
+x
+,
+y
+;
+
+730
+ss
+;
+
+731
+c
+;
+
+733
+ss
+ = 0;
+
+734
+fl_t_ge
+:
+
+735
+x
+ =
+ `ndom
+(%
+GRID_WIDTH
+;
+
+736
+y
+ =
+ `ndom
+(%
+GRID_HEIGHT
+;
+
+737 i(
+e
+->
+grid
+[
+ `INDEX
+(
+x
+,
+y
+)].
+cڋs
+ !
+CELL_EMPTY
+)
+
+738
+fl_t_ge
+;
+
+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
+)].
+emy
+ = 0;
+
+759
+ss
+++;
+
+760
+ `SDL_LogDebug
+(
+SDL_LOG_CATEGORY_APPLICATION
+,
+
+761 "fl_t: % (%d, %d)",
+_mes
+[()
+c
+],
+x
+,
+y
+);
+
+762 i(
+ss
+ < 3)
+
+763
+fl_t_ge
+;
+
+764
+ }
+}
+
+767
+ $fd_sh܋_th
+(
+Cl
+*
+c
+, Cl*
+sour
+, cڡ
+di
+)
+
+769 i(!
+c
+ || c->
+th_di
+ <
+di
+)
+
+772 i(!
+c
+->
+emy
+ && !c->
+tg
+ && !c->
+dg
+)
+
+775 i(
+c
+->
+tg
+)
+
+776
+c
+->
+th_di
+ =
+di
+;
+
+778 i(
+c
+->
+th_di
+ >
+di
+)
+
+780
+c
+->
+th_di
+ =
+di
+;
+
+781
+c
+->
+th_sour
+ =
+sour
+;
+
+784 i(
+c
+->
+dg
+)
+
+787
+ `fd_sh܋_th
+(
+c
+->
+
+, c,
+di
+ + 1);
+
+788
+ `fd_sh܋_th
+(
+c
+->
+up
+, c,
+di
+ + 1);
+
+789
+ `fd_sh܋_th
+(
+c
+->
+right
+, c,
+di
+ + 1);
+
+790
+ `fd_sh܋_th
+(
+c
+->
+down
+, c,
+di
+ + 1);
+
+791
+ }
+}
+
+794
+ $g_re_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_cod_to_sn_cod
+(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_cod_to_sn_codF
+(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
+ $hd_ick
+(
+S
+*
+e
+)
+
+860
+tx
+,
+ty
+;
+
+862
+ `as
+(
+e
+ !
+NULL
+);
+
+863 i(
+e
+->
+mode
+ =
+STATE_IDLE
+)
+
+865
+ `lcuϋ_grid_ig
+(
+e
+, &
+tx
+, &
+ty
+);
+
+866
+ `sn_cod_to_grid_cod
+(
+e
+, s->
+por
+.
+x
+,
+
+867
+e
+->
+por
+.
+y
+,
+tx
+,
+ty
+,
+
+868 &
+e
+->
+i_t
+.
+x
+, &e->i_t.
+y
+);
+
+869
+e
+->
+imi
+.
+t
+.
+x
+ = ()e->
+i_t
+.x;
+
+870
+e
+->
+imi
+.
+t
+.
+y
+ = ()e->
+i_t
+.y;
+
+871
+e
+->
+imi
+.
+posi
+.
+x
+ = s->imi.
+t
+.x;
+
+872
+e
+->
+imi
+.
+posi
+.
+y
+ = s->imi.
+t
+.y;
+
+873
+e
+->
+th_t
+
+
+874 &
+e
+->
+grid
+[
+ `INDEXFI
+(e->
+imi
+.
+t
+.
+x
+,
+
+875
+e
+->
+imi
+.
+t
+.
+y
+)];
+
+876
+ `SDL_LogDebug
+(
+SDL_LOG_CATEGORY_APPLICATION
+,
+
+878
+e
+->
+th_t
+->
+cods
+.
+x
+,
+
+879
+e
+->
+th_t
+->
+cods
+.
+y
+,
+
+880
+e
+->
+th_t
+->
+emy
+ ? "TRUE" : "FALSE");
+
+881 i(
+e
+->
+th_t
+->
+emy
+)
+
+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
+->
+tg
+ = 1;
+
+891
+ `SDL_LogDebug
+(
+SDL_LOG_CATEGORY_APPLICATION
+,
+
+895
+tx
+,
+ty
+,
+e
+->
+por
+.
+x
+, s->por.
+y
+,
+
+896
+e
+->
+i_t
+.
+x
+, s->i_t.
+y
+);
+
+897
+e
+->
+dw
+ = 1;
+
+899 i(
+e
+->
+mode
+ =
+STATE_SELECTION
+)
+
+901
+e
+->
+mode
+ =
+STATE_MOVING
+;
+
+902
+ `lcuϋ_grid_ig
+(
+e
+, &
+tx
+, &
+ty
+);
+
+903
+ `sn_cod_to_grid_cod
+(
+e
+, s->
+por
+.
+x
+,
+
+904
+e
+->
+por
+.
+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
+->
+emy
+)
+
+910
+hd_ick_t
+;
+
+912
+ `SDL_LogDebug
+(
+SDL_LOG_CATEGORY_APPLICATION
+,
+
+916
+tx
+,
+ty
+,
+e
+->
+por
+.
+x
+, s->por.
+y
+,
+
+917
+e
+->
+i_d
+.
+x
+, s->i_d.
+y
+);
+
+919
+ `SDL_LogDebug
+(
+SDL_LOG_CATEGORY_APPLICATION
+,
+
+921
+e
+->
+th_t
+->
+cods
+.
+x
+,
+
+922
+e
+->
+th_t
+->
+cods
+.
+y
+, s->
+th_d
+->cods.
+x
+,
+
+923
+e
+->
+th_d
+->
+cods
+.
+y
+);
+
+924
+e
+->
+th_d
+->
+dg
+ = 1;
+
+926
+ `fd_sh܋_th
+(
+e
+->
+th_t
+,
+NULL
+, 0);
+
+927
+ `mk_th
+(
+e
+->
+th_d
+);
+
+928
+ `tf
+("M =\n");
+
+929
+ `t_mrix
+(
+e
+->
+grid
+);
+
+932 i(!
+e
+->
+th_t
+->
+th_xt
+)
+
+933
+hd_ick_t
+;
+
+935
+e
+->
+imi
+.
+d
+.
+x
+ = s->
+th_t
+->
+th_xt
+->
+cods
+.x;
+
+936
+e
+->
+imi
+.
+d
+.
+y
+ = s->
+th_t
+->
+th_xt
+->
+cods
+.y;
+
+937
+ `SDL_LogDebug
+(
+SDL_LOG_CATEGORY_APPLICATION
+,
+
+939
+e
+->
+imi
+.
+t
+.
+x
+, s->imi.t.
+y
+,
+
+940
+e
+->
+imi
+.
+d
+.
+x
+, s->imi.d.
+y
+);
+
+941
+e
+->
+i_t
+.
+x
+ = -1;
+
+942
+e
+->
+i_t
+.
+y
+ = -1;
+
+943
+ `lcuϋ_d
+(
+e
+);
+
+944
+e
+->
+imi
+.
+
+ = 1;
+
+945
+e
+->
+imi
+.
+f_
+ =
+ANIM_STEPS
+;
+
+946
+e
+->
+imi
+.
+aive
+ = 1;
+
+947
+e
+->
+dw
+ = 1;
+
+948
+ `t_th
+(&
+e
+->
+grid
+[
+ `INDEXFI
+(e->
+imi
+.
+t
+.
+x
+,
+
+949
+e
+->
+imi
+.
+t
+.
+y
+)]);
+
+953
+hd_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
+->
+tg
+ = 0;
+
+958
+e
+->
+th_t
+ =
+NULL
+;
+
+959
+e
+->
+th_d
+->
+dg
+ = 0;
+
+960
+e
+->
+th_d
+ =
+NULL
+;
+
+961
+e
+->
+mode
+ =
+STATE_IDLE
+;
+
+962
+e
+->
+dw
+ = 1;
+
+963
+ }
+}
+
+966
+ $hd_evt
+(
+S
+*
+e
+,
+SDL_Evt
+*
+evt
+)
+
+973
+evt
+->
+ty
+)
+
+975
+SDL_EVENT_QUIT
+:
+
+976
+e
+->
+rug
+ = 0;
+
+978
+SDL_EVENT_WINDOW_RESIZED
+:
+
+979
+e
+->
+dw
+ = 1;
+
+980
+ `lcuϋ_diy_size
+(
+e
+);
+
+982
+SDL_EVENT_KEY_DOWN
+:
+
+983
+ `SDL_LogDebug
+(
+SDL_LOG_CATEGORY_APPLICATION
+,
+
+984 "G Keydown, key = %X, mod = %X",
+evt
+->
+key
+.key,
+
+985
+evt
+->
+key
+.
+mod
+);
+
+987
+evt
+->
+key
+.key)
+
+989
+SDLK_F1
+:
+
+990
+e
+->
+hp_shown
+ = 1;
+
+991
+e
+->
+dw
+ = 1;
+
+993
+SDLK_RETURN
+:
+
+994 i(!(
+evt
+->
+key
+.
+mod
+ &
+SDL_KMOD_ALT
+))
+
+996
+e
+->
+fu_sn
+ = !state->full_screen;
+
+997
+ `SDL_LogDebug
+(
+SDL_LOG_CATEGORY_APPLICATION
+,
+
+999
+e
+->
+fu_sn
+ ? "ON" : "OFF");
+
+1000
+ `SDL_SWdowFusn
+(
+e
+->
+wdow
+,
+
+1001
+e
+->
+fu_sn
+);
+
+1003
+SDLK_ESCAPE
+:
+
+1004
+e
+->
+hp_shown
+ = 0;
+
+1005
+e
+->
+dw
+ = 1;
+
+1007
+SDLK_Q
+:
+
+1008 i(
+evt
+->
+key
+.
+mod
+ &
+SDL_KMOD_CTRL
+)
+
+1009
+e
+->
+rug
+ = 0;
+
+1012
+ `SDL_LogDebug
+(
+SDL_LOG_CATEGORY_APPLICATION
+,
+
+1016
+SDL_EVENT_MOUSE_BUTTON_UP
+:
+
+1017
+ `hd_ick
+(
+e
+);
+
+1019
+SDL_EVENT_MOUSE_MOTION
+:
+
+1020
+e
+->
+por
+.
+x
+ =
+evt
+->
+mi
+.x;
+
+1021
+e
+->
+por
+.
+y
+ =
+evt
+->
+mi
+.y;
+
+1022
+e
+->
+dw
+ = 1;
+
+1025
+ }
+}
+
+1028
+ $_imi
+(
+AnimiS
+*
+imi
+)
+
+1030
+ `as
+(
+imi
+ !
+NULL
+);
+
+1031
+imi
+->
+t
+.
+x
+ = -1;
+
+1032
+imi
+->
+t
+.
+y
+ = -1;
+
+1033
+imi
+->
+posi
+.
+x
+ = -1;
+
+1034
+imi
+->
+posi
+.
+y
+ = -1;
+
+1035
+imi
+->
+d
+.
+x
+ = -1;
+
+1036
+imi
+->
+d
+.
+y
+ = -1;
+
+1037
+imi
+->
+d
+.
+x
+ = 0;
+
+1038
+imi
+->
+d
+.
+y
+ = 0;
+
+1039
+imi
+->
+aive
+ = 0;
+
+1040
+imi
+->
+
+ = 0;
+
+1041
+imi
+->
+f_
+ = 0;
+
+1042
+ }
+}
+
+1045
+ $_
+(
+Cl
+*
+c
+, cڡ
+SDL_FPot
+*
+cods
+)
+
+1047
+ `as
+((
+c
+ !
+NULL
+&& (
+cods
+ != NULL));
+
+1048
+c
+->
+emy
+ = 1;
+
+1049
+c
+->
+tg
+ = 0;
+
+1050
+c
+->
+dg
+ = 0;
+
+1051
+c
+->
+th
+ = 0;
+
+1052
+c
+->
+cods
+.
+x
+ = coords->x;
+
+1053
+c
+->
+cods
+.
+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
+ `_imi
+(&
+e
+->
+imi
+);
+
+1065
+e
+->
+grid
+ =
+NULL
+;
+
+1066
+e
+->
+loti_por
+ = 0;
+
+1067
+e
+->
+loti_ack
+ =
+NULL
+;
+
+1068
+e
+->
+_s_
+ = 2.0f;
+
+1069
+e
+->
+diy_width
+ =
+DEFAULT_WIDTH
+;
+
+1070
+e
+->
+diy_height
+ =
+DEFAULT_HEIGHT
+;
+
+1071
+e
+->
+fu_sn
+ = 1;
+
+1072
+e
+->
+hp_shown
+ = 0;
+
+1073
+e
+->
+th_t
+ =
+NULL
+;
+
+1074
+e
+->
+th_d
+ =
+NULL
+;
+
+1075
+e
+->
+dw
+ = 1;
+
+1076
+e
+->
+nd
+ =
+NULL
+;
+
+1077
+e
+->
+rug
+ = 1;
+
+1078
+e
+->
+sn_width
+ =
+DEFAULT_WIDTH
+;
+
+1079
+e
+->
+sn_height
+ =
+DEFAULT_HEIGHT
+;
+
+1080
+e
+->
+sce
+ = 0;
+
+1081
+e
+->
+res
+ =
+NULL
+;
+
+1082
+e
+->
+mode
+ =
+STATE_IDLE
+;
+
+1083
+e
+->
+r12_xtu
+ =
+NULL
+;
+
+1084
+e
+->
+background
+ =
+NULL
+;
+
+1085
+e
+->
+wdow
+ =
+NULL
+;
+
+1086
+e
+->
+xt_s_
+ = 2.0f;
+
+1087
+ }
+}
+
+1090
+ $ld_xtus
+(
+S
+*
+e
+)
+
+1092
+SDL_Sur
+*
+sur
+ =
+NULL
+;
+
+1093
+SDL_SMode
+
+s_mode
+ =
+SDL_SCALEMODE_PIXELART
+;
+
+1095
+ `as
+(
+e
+ !
+NULL
+);
+
+1097
+sur
+ =
+ `y_ld
+(
+SPRITES_PNG
+);
+
+1098 i(!
+sur
+)
+
+1100
+e
+->
+res
+ =
+ `SDL_CeTextuFromSur
+(e->
+nd
+,
+sur
+);
+
+1101 i(!
+e
+->
+res
+)
+
+1103
+ `SDL_LogE
+(
+SDL_LOG_CATEGORY_ERROR
+,
+
+1105
+ `SDL_GE
+());
+
+1106
+ `do_ex
+(1,
+e
+);
+
+1108
+ `SDL_STextuSMode
+(
+e
+->
+res
+,
+s_mode
+);
+
+1109
+ `SDL_DeroySur
+(
+sur
+);
+
+1111
+sur
+ =
+ `y_ld
+(
+TER12_PNG
+);
+
+1112 i(!
+sur
+)
+
+1114
+e
+->
+r12_xtu
+
+
+1115
+ `SDL_CeTextuFromSur
+(
+e
+->
+nd
+,
+sur
+);
+
+1116 i(!
+e
+->
+r12_xtu
+)
+
+1118
+ `SDL_LogE
+(
+SDL_LOG_CATEGORY_ERROR
+,
+
+1120
+ `SDL_GE
+());
+
+1121
+ `do_ex
+(1,
+e
+);
+
+1123
+ `SDL_STextuSMode
+(
+e
+->
+r12_xtu
+,
+s_mode
+);
+
+1124
+ `SDL_DeroySur
+(
+sur
+);
+
+1127
+ }
+}
+
+1130
+ $loti_p
+(
+S
+*
+e
+,
+SDL_Pot
+*
+loti
+)
+
+1132
+ `as
+((
+e
+ !
+NULL
+&& (
+loti
+ != NULL));
+
+1133 i(
+e
+->
+loti_por
+ == 0)
+
+1135
+e
+->
+loti_por
+--;
+
+1136
+loti
+->
+x
+ =
+e
+->
+loti_ack
+[e->
+loti_por
+].x;
+
+1137
+loti
+->
+y
+ =
+e
+->
+loti_ack
+[e->
+loti_por
+].y;
+
+1139
+ }
+}
+
+1142
+ $loti_push
+(
+S
+*
+e
+, cڡ
+SDL_Pot
+*
+loti
+)
+
+1144
+ `as
+(
+loti
+ !
+NULL
+);
+
+1145
+e
+->
+loti_ack
+[e->
+loti_por
+].
+x
+ =
+loti
+->x;
+
+1146
+e
+->
+loti_ack
+[e->
+loti_por
+].
+y
+ =
+loti
+->y;
+
+1147
+e
+->
+loti_por
+++;
+
+1148
+ }
+}
+
+1151
+ $mk_th
+(
+Cl
+*
+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
+->
+cods
+.
+x
+, c->th_sour->cods.
+y
+,
+
+1163
+c
+->
+th_sour
+->
+th_xt
+->
+cods
+.
+x
+,
+
+1164
+c
+->
+th_sour
+->
+th_xt
+->
+cods
+.
+y
+);
+
+1166
+ `mk_th
+(
+c
+->
+th_sour
+);
+
+1167
+ }
+}
+
+1170
+ $xt_
+(
+S
+*
+e
+)
+
+1172
+ `as
+(
+e
+ !
+NULL
+);
+
+1173
+e
+->
+dw
+ = 1;
+
+1174
+ }
+}
+
+1177
+ $sb
+(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_mrix
+(cڡ
+Cl
+*
+M
+)
+
+1187 cڡ
+Cl
+*
+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
+->
+tg
+)
+
+1196
+ `tf
+("%s",
+_image
+[
+CELL_START
+]);
+
+1197 i(
+c
+->
+dg
+)
+
+1198
+ `tf
+("%s",
+_image
+[
+CELL_END
+]);
+
+1199 i(
+c
+->
+th
+)
+
+1200
+ `tf
+("%s",
+_image
+[
+CELL_PATH
+]);
+
+1201 i(!
+c
+->
+emy
+)
+
+1202
+ `tf
+("%s",
+_image
+[
+c
+->
+cڋs
+]);
+
+1204
+ `tf
+("%s",
+_image
+[
+CELL_EMPTY
+]);
+
+1206
+ `tf
+("\n");
+
+1209
+ }
+}
+
+1212
+ $t_th
+(
+Cl
+*
+c
+)
+
+1214
+ `tf
+("(%0.0f, %0.0f)",
+c
+->
+cods
+.
+x
+, c->cods.
+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
+->
+loti_por
+ = 0;
+
+1236
+e
+->
+imi
+.
+aive
+ = 0;
+
+1237
+e
+->
+dw
+ = 1;
+
+1238
+ }
+}
+
+1241
+ $t_th
+(
+Cl
+*
+grid
+)
+
+1243
+Cl
+*
+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
+->
+tg
+ = 0;
+
+1256
+c
+->
+dg
+ = 0;
+
+1257
+c
+->
+th
+ = 0;
+
+1259
+ }
+}
+
+1262
+ $sn_cod_to_grid_cod
+(
+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
+->
+diy_width
+ / s->
+sn_width
+;
+
+1272
+__y
+ = ()
+e
+->
+diy_height
+ / s->
+sn_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
+ $sn_cod_to_grid_codF
+(
+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
+->
+diy_width
+ / s->
+sn_width
+;
+
+1305
+__y
+ = ()
+e
+->
+diy_height
+ / s->
+sn_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
+ $_imi
+(
+S
+*
+e
+)
+
+1330
+Cl
+*
+om
+ =
+NULL
+;
+
+1331
+Cl
+*
+to
+ =
+NULL
+;
+
+1332
+isx
+,
+isy
+,
+x
+,
+y
+;
+
+1334 i(
+e
+->
+imi
+.
+
+ =e->imi.
+f_
+)
+
+1336
+isx
+ = ()
+ `round
+(
+e
+->
+imi
+.
+t
+.
+x
+);
+
+1337
+isy
+ = ()
+ `round
+(
+e
+->
+imi
+.
+t
+.
+y
+);
+
+1338
+x
+ = ()
+ `round
+(
+e
+->
+imi
+.
+d
+.
+x
+);
+
+1339
+y
+ = ()
+ `round
+(
+e
+->
+imi
+.
+d
+.
+y
+);
+
+1340
+om
+ = &
+e
+->
+grid
+[
+ `INDEX
+(
+isx
+,
+isy
+)];
+
+1341
+to
+ = &
+e
+->
+grid
+[
+ `INDEX
+(
+x
+,
+y
+)];
+
+1343 i(
+to
+->
+dg
+)
+
+1345
+e
+->
+imi
+.
+aive
+ = 0;
+
+1346
+ `SDL_LogDebug
+(
+SDL_LOG_CATEGORY_APPLICATION
+,
+
+1348
+e
+->
+imi
+.
+d
+.
+x
+, s->imi.d.
+y
+);
+
+1350 i(
+to
+->
+th_xt
+)
+
+1352
+e
+->
+imi
+.
+t
+.
+x
+ = s->imi.
+d
+.x;
+
+1353
+e
+->
+imi
+.
+t
+.
+y
+ = s->imi.
+d
+.y;
+
+1354
+e
+->
+imi
+.
+posi
+.
+x
+ = s->imi.
+t
+.x;
+
+1355
+e
+->
+imi
+.
+posi
+.
+y
+ = s->imi.
+t
+.y;
+
+1356
+e
+->
+imi
+.
+d
+.
+x
+ =
+to
+->
+th_xt
+->
+cods
+.x;
+
+1357
+e
+->
+imi
+.
+d
+.
+y
+ =
+to
+->
+th_xt
+->
+cods
+.y;
+
+1358
+ `SDL_LogDebug
+(
+SDL_LOG_CATEGORY_APPLICATION
+,
+
+1360
+e
+->
+imi
+.
+d
+.
+x
+, s->imi.d.
+y
+);
+
+1361
+ `SDL_LogDebug
+(
+SDL_LOG_CATEGORY_APPLICATION
+,
+
+1363
+e
+->
+imi
+.
+t
+.
+x
+,
+
+1364
+e
+->
+imi
+.
+t
+.
+y
+,
+
+1365
+e
+->
+imi
+.
+d
+.
+x
+, s->imi.d.
+y
+);
+
+1366
+ `lcuϋ_d
+(
+e
+);
+
+1367
+e
+->
+imi
+.
+
+ = 1;
+
+1371
+ `SDL_LogDebug
+(
+SDL_LOG_CATEGORY_APPLICATION
+,
+
+1373
+e
+->
+imi
+.
+d
+.
+x
+, s->imi.d.
+y
+);
+
+1374
+e
+->
+imi
+.
+aive
+ = 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
+->
+emy
+ = 0;
+
+1383
+om
+->
+emy
+ = 1;
+
+1385 i(
+to
+->
+dg
+)
+
+1387
+ `t_th
+(
+e
+->
+grid
+);
+
+1388
+e
+->
+th_t
+ =
+NULL
+;
+
+1389
+e
+->
+th_d
+ =
+NULL
+;
+
+1391
+ `check_five
+(
+e
+,
+to
+);
+
+1396
+e
+->
+imi
+.
+posi
+.
+x
+ +e->imi.
+d
+.x;
+
+1397
+e
+->
+imi
+.
+posi
+.
+y
+ +e->imi.
+d
+.y;
+
+1398
+e
+->
+imi
+.
+
+++;
+
+1399
+ `SDL_LogDebug
+(
+SDL_LOG_CATEGORY_APPLICATION
+,
+
+1401
+e
+->
+imi
+.
+posi
+.
+x
+, s->imi.posi.
+y
+,
+
+1402
+e
+->
+imi
+.
+d
+.
+x
+, s->imi.d.
+y
+,
+
+1403
+e
+->
+imi
+.
+
+, s->imi.
+f_
+,
+
+1404
+e
+->
+imi
+.
+aive
+ ? "ACTIVE" : "INACTIVE");
+
+1405
+ }
+}
+
+1407
+SDL_Sur
+*
+
+1408
+ $y_ld
+(cڡ *
+fame
+)
+
+1410
+SDL_Sur
+*
+sur
+ =
+NULL
+;
+
+1411
+x_thme
+[
+BUFSIZE
+];
+
+1413
+ `as
+(
+fame
+ !
+NULL
+);
+
+1414
+ `tf
+(
+x_thme
+,
+BUFSIZE
+, "%s/%s",
+DATADIR
+,
+fame
+);
+
+1415
+sur
+ =
+ `IMG_Ld
+(
+x_thme
+);
+
+1416 i(!
+sur
+)
+
+1418
+ `SDL_LogE
+(
+SDL_LOG_CATEGORY_ERROR
+,
+
+1419 "y_ld: IMG_Ld faed: %s",
+ `SDL_GE
+());
+
+1420
+ `tf
+(
+x_thme
+,
+BUFSIZE
+, "./%s",
+fame
+);
+
+1421
+ `SDL_LogDebug
+(
+SDL_LOG_CATEGORY_APPLICATION
+,
+
+1422 "y_ld:ryg %s",
+x_thme
+);
+
+1423
+sur
+ =
+ `IMG_Ld
+(
+x_thme
+);
+
+1424 i(!
+sur
+)
+
+1426
+ `SDL_LogE
+(
+SDL_LOG_CATEGORY_ERROR
+,
+
+1428
+ `SDL_GE
+());
+
+1429
+ `ex
+(1);
+
+1431
+ `SDL_LogDebug
+(
+SDL_LOG_CATEGORY_APPLICATION
+,
+
+1432 "y_ld: sucs(%s)",
+x_thme
+);
+
+1435
+sur
+;
+
+1436
+ }
+}
+
+1439
+ $ma
+(
+gc
+, **
+gv
+)
+
+1441
+SDL_Evt
+
+evt
+;
+
+1442
+Cl
+*
+c
+ =
+NULL
+;
+
+1443
+S
+
+e
+;
+
+1444
+timeec
+
+now
+;
+
+1445
+SDL_FPot
+
+cods
+;
+
+1446
+px
+,
+py
+;
+
+1447
+ockid_t
+
+cid
+;
+
+1448
+ϡ_time
+,
+cut_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_GE
+());
+
+1459
+ `ex
+(1);
+
+1462
+ `SDL_SLogPriܙs
+(
+SDL_LOG_PRIORITY_DEBUG
+);
+
+1463 i(!
+ `SDL_CeWdowAndRd
+(
+WIN_TITLE
+,
+DEFAULT_WIDTH
+,
+
+1464
+DEFAULT_HEIGHT
+,
+
+1465
+SDL_WINDOW_FULLSCREEN
+ |
+SDL_WINDOW_BORDERLESS
+,
+
+1466 &
+e
+.
+wdow
+, &e.
+nd
+))
+
+1468
+ `SDL_LogE
+(
+SDL_LOG_CATEGORY_ERROR
+,
+
+1470
+ `SDL_GE
+());
+
+1471
+ `do_ex
+(1, &
+e
+);
+
+1474
+ `SDL_SHtWhPriܙy
+(
+SDL_HINT_RENDER_VSYNC
+, "1",
+SDL_HINT_OVERRIDE
+);
+
+1475
+ `SDL_SRdLogilPi
+(
+e
+.
+nd
+,
+DEFAULT_WIDTH
+,
+
+1476
+DEFAULT_HEIGHT
+,
+SDL_LOGICAL_PRESENTATION_LETTERBOX
+);
+
+1478
+ `lcuϋ_diy_size
+(&
+e
+);
+
+1480
+e
+.
+grid
+ =
+ `mloc
+((
+Cl
+*
+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
+cods
+.
+x
+ = x;
+
+1491
+cods
+.
+y
+ = y;
+
+1492
+ `_
+(
+c
+, &
+cods
+);
+
+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(
+ `ld_xtus
+(&
+e
+) < 0)
+
+1522
+ `do_ex
+(1, &
+e
+);
+
+1524
+e
+.
+loti_ack
+
+
+1525 (
+SDL_Pot
+*)
+ `oc
+(
+LOCATION_STACK_MAX
+, (SDL_Point));
+
+1526
+e
+.
+imi
+.
+aive
+ = 0;
+
+1528
+ `SDL_GMouS
+(&
+px
+, &
+py
+);
+
+1529
+e
+.
+por
+.
+x
+ =
+px
+;
+
+1530
+e
+.
+por
+.
+y
+ =
+py
+;
+
+1532
+ϡ_time
+ =
+ `SDL_GTicks
+();
+
+1533
+ `ock_guockid
+(
+ `gpid
+(), &
+cid
+);
+
+1534
+ `ock_gtime
+(
+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
+ `fl_t
+(&
+e
+);
+
+1543
+e
+.
+rug
+)
+
+1545
+cut_time
+ =
+ `SDL_GTicks
+();
+
+1546 i(
+e
+.
+imi
+.
+aive
+)
+
+1548 i(
+cut_time
+ >
+ϡ_time
+ + 1000 / 60)
+
+1550
+ `dw
+(&
+e
+);
+
+1551
+ `_imi
+(&
+e
+);
+
+1552
+ϡ_time
+ =
+cut_time
+;
+
+1557 i(
+e
+.
+dw
+)
+
+1559
+ `dw
+(&
+e
+);
+
+1560
+e
+.
+dw
+ = 0;
+
+1564
+ `SDL_PlEvt
+(&
+evt
+))
+
+1565
+ `hd_evt
+(&
+e
+, &
+evt
+);
+
+1569
+ }
+}
+
+ @version.h
+
+5
+ #PROGRAM_NAME
+ "lije"
+
+ )
+
+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 :
+ `__as2
+(
+__FILE__
+,
+__LINE__
+,
+__func__
+, #e))
+
+ )
+
+58
+ #as
+(
+e
+(? ()0 :
+ `__as
+(
+__FILE__
+,
+__LINE__
+, #e))
+
+ )
+
+62 #ide
+_ASSERT_H_
+
+
+63
+ #_ASSERT_H_
+
+
+ )
+
+65 #i
+defed
+(
+__STDC_VERSION__
+) && __STDC_VERSION__ >= 201112
+
+66
+ #ic_as
+
+_Stic_as
+
+
+ )
+
+69
+__BEGIN_DECLS
+
+
+70
+__dd
+
+__as
+(const *, , const *);
+
+71
+__dd
+
+__as2
+(const *, , const *, const *);
+
+72
+ g__END_DECLS
+
+
+ @/usr/include/errno.h
+
+39 #idef
+_ERRNO_H_
+
+
+40
+ #_ERRNO_H_
+
+
+ )
+
+42
+ ~<sys/o.h
+>
+
+44
+ g__BEGIN_DECLS
+
+
+45 #i
+__BSD_VISIBLE
+
+
+46 #idef
+__SYS_ERRLIST
+
+
+47
+ #__SYS_ERRLIST
+
+
+ )
+
+48
+sys_ü
+;
+
+49 *
+sys_i
+[];
+
+53 #ide
+o
+
+
+54 *
+__o
+();
+
+55
+ #o
+ (*
+ `__o
+())
+
+ )
+
+57
+ g__END_DECLS
+
+
+ @/usr/include/math.h
+
+17 #ide
+_MATH_H_
+
+
+18
+ #_MATH_H_
+
+
+ )
+
+20
+ ~<sys/_tys.h
+>
+
+21
+ ~<sys/lims.h
+>
+
+23
+__BEGIN_DECLS
+
+
+27
+__fy
+[];
+
+28 #i
+__GNUC_PREREQ__
+(3, 3)
+
+29
+ #HUGE_VAL
+
+ `__but_huge_v
+()
+
+ )
+
+31
+ #HUGE_VAL
+ (*(*)(*)
+__fy
+)
+
+ )
+
+37 #i
+__ISO_C_VISIBLE
+ >= 1999
+
+38
+__doub_t
+
+ tdoub_t
+;
+
+39
+__t_t
+
+ tt_t
+;
+
+41 #i
+__GNUC_PREREQ__
+(3, 3)
+
+42
+ #HUGE_VALF
+
+ `__but_huge_vf
+()
+
+ )
+
+43
+ #HUGE_VALL
+
+ `__but_huge_vl
+()
+
+ )
+
+44
+ #INFINITY
+
+ `__but_ff
+()
+
+ )
+
+45
+ #NAN
+
+ `__but_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
+ #mh_rhdlg
+
+MATH_ERREXCEPT
+
+
+ )
+
+79
+ #assify
+(
+x
+) \
+
+80 (( (
+x
+) == ()) ? \
+
+81
+ `__assifyf
+(
+x
+) \
+
+82 : ( (
+x
+) == ()) ? \
+
+83
+ `__assify
+(
+x
+) \
+
+84 :
+ `__assifyl
+(
+x
+))
+
+ )
+
+85
+ #isfe
+(
+x
+) \
+
+86 (( (
+x
+) == ()) ? \
+
+87
+ `__isfef
+(
+x
+) \
+
+88 : ( (
+x
+) == ()) ? \
+
+89
+ `__isfe
+(
+x
+) \
+
+90 :
+ `__isf
+(
+x
+))
+
+ )
+
+91
+ #im
+(
+x
+) \
+
+92 (( (
+x
+) == ()) ? \
+
+93
+ `__imf
+(
+x
+) \
+
+94 : ( (
+x
+) == ()) ? \
+
+95
+ `__im
+(
+x
+) \
+
+96 :
+ `__iml
+(
+x
+))
+
+ )
+
+97
+ #signb
+(
+x
+) \
+
+98 (( (
+x
+) == ()) ? \
+
+99
+ `__signbf
+(
+x
+) \
+
+100 : ( (
+x
+) == ()) ? \
+
+101
+ `__signb
+(
+x
+) \
+
+102 :
+ `__signbl
+(
+x
+))
+
+ )
+
+104
+ #isg
+(
+x
+,
+y
+(!
+ `isunded
+((x), (y)&& (x> (y))
+
+ )
+
+105
+ #isgequ
+(
+x
+,
+y
+(!
+ `isunded
+((x), (y)&& (x>(y))
+
+ )
+
+106
+ #iess
+(
+x
+,
+y
+(!
+ `isunded
+((x), (y)&& (x< (y))
+
+ )
+
+107
+ #iesqu
+(
+x
+,
+y
+(!
+ `isunded
+((x), (y)&& (x<(y))
+
+ )
+
+108
+ #iessg
+(
+x
+,
+y
+(!
+ `isunded
+((x), (y)) && \
+
+109 ((
+x
+> (
+y
+|| (y> (x)))
+
+ )
+
+110
+ #isunded
+(
+x
+,
+y
+(
+ `i
+(x|| i(y))
+
+ )
+
+113
+ #isf
+(
+x
+) \
+
+114 (( (
+x
+) == ()) ? \
+
+115
+ `__isff
+(
+x
+) \
+
+116 : ( (
+x
+) == ()) ? \
+
+117
+ `__isf
+(
+x
+) \
+
+118 :
+ `__is
+(
+x
+))
+
+ )
+
+119
+ #i
+(
+x
+) \
+
+120 (( (
+x
+) == ()) ? \
+
+121
+ `__if
+(
+x
+) \
+
+122 : ( (
+x
+) == ()) ? \
+
+123
+ `__i
+(
+x
+) \
+
+124 :
+ `__il
+(
+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
+sh
+();
+
+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
+ash
+();
+
+205
+h
+();
+
+207
+exp2
+();
+
+208
+expm1
+();
+
+209
+ogb
+();
+
+210
+log1p
+();
+
+211
+log2
+();
+
+212
+logb
+();
+
+213
+slbn
+(, );
+
+214
+slb
+(, );
+
+216
+cb
+();
+
+217
+hyp
+(, );
+
+219
+f
+();
+
+220
+fc
+();
+
+221
+lgamma
+();
+
+222
+tgamma
+();
+
+224
+ìbyt
+();
+
+225
+rt
+();
+
+226
+̚t
+();
+
+227
+rt
+();
+
+228
+round
+();
+
+229
+ound
+();
+
+230
+round
+();
+
+231
+unc
+();
+
+233
+mad
+(, );
+
+234
+mquo
+(, , *);
+
+236
+cysign
+(, );
+
+237
+n
+(const *);
+
+238
+x
+(, );
+
+239
+xowd
+(, );
+
+241
+fdim
+(, );
+
+242
+fmax
+(, );
+
+243
+fm
+(, );
+
+245
+fma
+(, , );
+
+248 #i
+__BSD_VISIBLE
+ ||
+__XPG_VISIBLE
+
+
+249
+j0
+();
+
+250
+j1
+();
+
+251
+jn
+(, );
+
+252
+slb
+(, );
+
+253
+y0
+();
+
+254
+y1
+();
+
+255
+yn
+(, );
+
+258 #i
+__BSD_VISIBLE
+ ||
+__XPG_VISIBLE
+ <= 500
+
+259
+gamma
+();
+
+265 #i
+__BSD_VISIBLE
+
+
+266
+dm
+(, );
+
+267
+fe
+();
+
+273
+gamma_r
+(, *);
+
+274
+lgamma_r
+(, *);
+
+276
+scos
+(, *, *);
+
+281
+signifind
+();
+
+287 #i
+__ISO_C_VISIBLE
+ >= 1999
+
+288
+acosf
+();
+
+289
+asf
+();
+
+290
+f
+();
+
+291
+2f
+(, );
+
+292
+cosf
+();
+
+293
+sf
+();
+
+294
+nf
+();
+
+296
+acoshf
+();
+
+297
+ashf
+();
+
+298
+hf
+();
+
+299
+coshf
+();
+
+300
+shf
+();
+
+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
+slbnf
+(, );
+
+316
+slbf
+(, );
+
+318
+cbf
+();
+
+319
+bsf
+();
+
+320
+hypf
+(, );
+
+321
+powf
+(, );
+
+322
+sqf
+();
+
+324
+ff
+();
+
+325
+fcf
+();
+
+326
+lgammaf
+();
+
+327
+tgammaf
+();
+
+329
+f
+();
+
+330
+of
+();
+
+331
+ìbytf
+();
+
+332
+rtf
+();
+
+333
+̚tf
+();
+
+334
+rtf
+();
+
+335
+roundf
+();
+
+336
+oundf
+();
+
+337
+roundf
+();
+
+338
+uncf
+();
+
+340
+fmodf
+(, );
+
+341
+madf
+(, );
+
+342
+mquof
+(, , *);
+
+344
+cysignf
+(, );
+
+345
+nf
+(const *);
+
+346
+xf
+(, );
+
+347
+xowdf
+(, );
+
+349
+fdimf
+(, );
+
+350
+fmaxf
+(, );
+
+351
+fmf
+(, );
+
+353
+fmaf
+(, , );
+
+356 #i
+__BSD_VISIBLE
+ ||
+__XPG_VISIBLE
+
+
+357
+j0f
+();
+
+358
+j1f
+();
+
+359
+jnf
+(, );
+
+360
+slbf
+(, );
+
+361
+y0f
+();
+
+362
+y1f
+();
+
+363
+ynf
+(, );
+
+366 #i
+__BSD_VISIBLE
+ ||
+__XPG_VISIBLE
+ <= 500
+
+367
+gammaf
+();
+
+373 #i
+__BSD_VISIBLE
+
+
+374
+dmf
+(, );
+
+375
+fef
+();
+
+376
+isff
+();
+
+377
+if
+();
+
+384
+gammaf_r
+(, *);
+
+385
+lgammaf_r
+(, *);
+
+387
+scosf
+(, *, *);
+
+392
+signifindf
+();
+
+398 #i
+__ISO_C_VISIBLE
+ >= 1999
+
+399
+aco
+();
+
+400
+asl
+();
+
+401
+l
+();
+
+402
+2l
+(, );
+
+403
+co
+();
+
+404
+sl
+();
+
+405
+
+();
+
+407
+acoshl
+();
+
+408
+ashl
+();
+
+409
+hl
+();
+
+410
+coshl
+();
+
+411
+shl
+();
+
+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
+slb
+(, );
+
+427
+slbl
+(, );
+
+429
+cbl
+();
+
+430
+b
+();
+
+431
+hypl
+(, );
+
+432
+powl
+(, );
+
+433
+sql
+();
+
+435
+
+();
+
+436
+f
+();
+
+437
+lgamm
+();
+
+438
+tgamm
+();
+
+440
+l
+();
+
+441
+ol
+();
+
+442
+ìby
+();
+
+443
+r
+();
+
+444
+̚
+();
+
+445
+r
+();
+
+446
+roundl
+();
+
+447
+oundl
+();
+
+448
+roundl
+();
+
+449
+un
+();
+
+451
+fmodl
+(, );
+
+452
+madl
+(, );
+
+453
+mqu
+(, , *);
+
+455
+cysig
+(, );
+
+456
+
+(const *);
+
+457
+xl
+(, );
+
+458
+xowdl
+(, );
+
+460
+fdiml
+(, );
+
+461
+fmaxl
+(, );
+
+462
+fml
+(, );
+
+464
+fm
+(, , );
+
+470 #i
+__BSD_VISIBLE
+
+
+471
+sco
+(, *, *);
+
+477
+__assify
+();
+
+478
+__assifyf
+();
+
+479
+__assifyl
+();
+
+480
+__isfe
+();
+
+481
+__isfef
+();
+
+482
+__isf
+();
+
+483
+__isf
+();
+
+484
+__isff
+();
+
+485
+__is
+();
+
+486
+__i
+();
+
+487
+__if
+();
+
+488
+__il
+();
+
+489
+__im
+();
+
+490
+__imf
+();
+
+491
+__iml
+();
+
+492
+__signb
+();
+
+493
+__signbf
+();
+
+494
+__signbl
+();
+
+495
+ g__END_DECLS
+
+
+ @/usr/include/stdarg.h
+
+18 #ide
+_STDARG_H_
+
+
+19
+ #_STDARG_H_
+
+
+ )
+
+21
+ ~<sys/cdefs.h
+>
+
+25 #ide
+__GNUC_VA_LIST
+
+
+26
+ #__GNUC_VA_LIST
+
+
+ )
+
+27
+__but_va_li
+
+ t__gnuc_va_li
+;
+
+34
+ #va_t
+(
+
+,
+ϡ
+
+ `__but_va_t
+(p),a)
+
+ )
+
+35
+ #va_d
+(
+
+
+ `__but_va_d
+(p))
+
+ )
+
+36
+ #va_g
+(
+
+,
+ty
+
+ `__but_va_g
+(p),y)
+
+ )
+
+37
+ #__va_cy
+(
+d
+,
+c
+
+ `__but_va_cy
+((d),(c))
+
+ )
+
+39
+__gnuc_va_li
+
+ tva_li
+;
+
+41 #i
+__ISO_C_VISIBLE
+ >= 1999
+
+42
+ #va_cy
+(
+d
+,
+c
+
+ `__va_cy
+((d), (c))
+
+ )
+
+ @/usr/include/stdio.h
+
+38 #idef
+_STDIO_H_
+
+
+39
+ #_STDIO_H_
+
+
+ )
+
+41
+ ~<sys/cdefs.h
+>
+
+42
+ ~<sys/_nu.h
+>
+
+43
+ ~<sys/_tys.h
+>
+
+45 #i
+__BSD_VISIBLE
+ ||
+__POSIX_VISIBLE
+ ||
+__XPG_VISIBLE
+
+
+46
+ ~<sys/tys.h
+>
+
+49 #idef
+_SIZE_T_DEFINED_
+
+
+50
+ #_SIZE_T_DEFINED_
+
+
+ )
+
+51
+__size_t
+
+ tsize_t
+;
+
+54 #idef
+_OFF_T_DEFINED_
+
+
+55
+ #_OFF_T_DEFINED_
+
+
+ )
+
+56
+__off_t
+
+ toff_t
+;
+
+59
+ #_FSTDIO
+
+
+ )
+
+61
+off_t
+
+ tos_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_fe
+;
+
+105
+__sbuf
+
+ m_bf
+;
+
+106
+ m_lbfsize
+;
+
+109 *
+ m_cook
+;
+
+110 (*
+ m_o
+)(*);
+
+111 (*
+ m_ad
+)(*, *, );
+
+112
+os_t
+ (*
+_ek
+)(*,
+ mos_t
+, );
+
+113 (*
+ m_wre
+)(*, 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_offt
+;
+
+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_tmam
+ 1024
+
+ )
+
+185
+ #TMP_MAX
+ 0x7ffffff
+
+ )
+
+187 #ide
+SEEK_SET
+
+
+188
+ #SEEK_SET
+ 0
+
+ )
+
+190 #ide
+SEEK_CUR
+
+
+191
+ #SEEK_CUR
+ 1
+
+ )
+
+193 #ide
+SEEK_END
+
+
+194
+ #SEEK_END
+ 2
+
+ )
+
+197
+ #d
+ (&
+__sF
+[0])
+
+ )
+
+198
+ #dout
+ (&
+__sF
+[1])
+
+ )
+
+199
+ #dr
+ (&
+__sF
+[2])
+
+ )
+
+204
+__BEGIN_DECLS
+
+
+205
+
+(
+FILE
+ *);
+
+206 #i
+__POSIX_VISIBLE
+ >= 200809
+
+207
+ $dtf
+(, cڡ *
+__ri
+, ...)
+
+208
+ `__ibu__
+((
+ $__fm__
+ (
+tf
+, 2, 3)))
+
+209
+ `__ibu__
+((
+ `__nnu__
+ (2)));
+
+211
+ `fo
+(
+FILE
+ *);
+
+212
+ `of
+(
+FILE
+ *);
+
+213
+ `
+(
+FILE
+ *);
+
+214
+ `fush
+(
+FILE
+ *);
+
+215
+ `fgc
+(
+FILE
+ *);
+
+216
+ `fgpos
+(
+FILE
+ *,
+os_t
+ *);
+
+217 *
+ $fgs
+(*, ,
+FILE
+ *)
+
+218
+ `__ibu__
+((
+ `__bounded__
+ (
+__rg__
+,1,2)));
+
+219
+FILE
+ *
+ `fݒ
+(const *, const *);
+
+220
+ `rtf
+(
+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
+ `fsnf
+(
+FILE
+ *, const *, ...);
+
+227
+ `fek
+(
+FILE
+ *, , );
+
+228
+ `feko
+(
+FILE
+ *,
+off_t
+, );
+
+229
+ `fos
+(
+FILE
+ *, cڡ
+os_t
+ *);
+
+230
+ `l
+(
+FILE
+ *);
+
+231
+off_t
+
+ `lo
+(
+FILE
+ *);
+
+232
+size_t
+
+ $fwre
+(cڡ *,
+size_t
+, size_t,
+FILE
+ *)
+
+233
+ `__ibu__
+((
+ `__bounded__
+ (
+__size__
+,1,3,2)));
+
+234
+ `gc
+(
+FILE
+ *);
+
+235
+ `gch
+();
+
+236 #i
+__POSIX_VISIBLE
+ >= 200809
+
+237
+ssize_t
+
+ `gdim
+(**
+__ri
+,
+size_t
+ * __restrict, ,
+
+238
+FILE
+ *
+__ri
+);
+
+239
+ssize_t
+
+ `gle
+(**
+__ri
+,
+size_t
+ * __restrict,
+
+240
+FILE
+ *
+__ri
+);
+
+242 #i
+__BSD_VISIBLE
+ && !
+ `defed
+(
+__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
+ `mt
+(, const *, , const *);
+
+258
+ `wd
+(
+FILE
+ *);
+
+259
+ `snf
+(const *, ...);
+
+260
+ `tbuf
+(
+FILE
+ *, *);
+
+261
+ `tvbuf
+(
+FILE
+ *, *, ,
+size_t
+);
+
+262
+ `rtf
+(*
+__ri
+, const * __restrict, ...);
+
+263
+ `ssnf
+(const *, const *, ...);
+
+264
+FILE
+ *
+ `tmpfe
+();
+
+265 *
+ `tmam
+(*);
+
+266
+ `ungc
+(,
+FILE
+ *);
+
+267
+ `vrtf
+(
+FILE
+ *, cڡ *
+__ri
+,
+__va_li
+);
+
+268
+ `vtf
+(cڡ *
+__ri
+,
+__va_li
+);
+
+269
+ `vrtf
+(*
+__ri
+, cڡ * __ri,
+__va_li
+);
+
+270 #i
+__POSIX_VISIBLE
+ >= 200809
+
+271
+ $vdtf
+(, cڡ *
+__ri
+,
+__va_li
+)
+
+272
+ `__ibu__
+((
+ $__fm__
+ (
+tf
+, 2, 0)))
+
+273
+ `__ibu__
+((
+ `__nnu__
+ (2)));
+
+276 #i
+__ISO_C_VISIBLE
+ >1999 ||
+__XPG_VISIBLE
+ >500 ||
+__BSD_VISIBLE
+
+
+277
+ $tf
+(*
+__ri
+,
+size_t
+, const * __restrict, ...)
+
+278
+ `__ibu__
+((
+ $__fm__
+ (
+tf
+, 3, 4)))
+
+279
+ `__ibu__
+((
+ $__nnu__
+ (3)))
+
+280
+ `__ibu__
+((
+ `__bounded__
+ (
+__rg__
+,1,2)));
+
+281
+ $vtf
+(*
+__ri
+,
+size_t
+, const * __restrict,
+
+282
+__va_li
+)
+
+283
+ `__ibu__
+((
+ $__fm__
+ (
+tf
+, 3, 0)))
+
+284
+ `__ibu__
+((
+ $__nnu__
+ (3)))
+
+285
+ `__ibu__
+((
+ `__bounded__
+(
+__rg__
+,1,2)));
+
+288 #i
+__ISO_C_VISIBLE
+ >1999 ||
+__BSD_VISIBLE
+
+
+289
+ $vfsnf
+(
+FILE
+ *, cڡ *,
+__va_li
+)
+
+290
+ `__ibu__
+((
+ $__fm__
+ (
+snf
+, 2, 0)))
+
+291
+ `__ibu__
+((
+ `__nnu__
+ (2)));
+
+292
+ $vsnf
+(cڡ *,
+__va_li
+)
+
+293
+ `__ibu__
+((
+ $__fm__
+ (
+snf
+, 1, 0)))
+
+294
+ `__ibu__
+((
+ `__nnu__
+ (1)));
+
+295
+ $vssnf
+(cڡ *, cڡ *,
+__va_li
+)
+
+296
+ `__ibu__
+((
+ $__fm__
+ (
+snf
+, 2, 0)))
+
+297
+ `__ibu__
+((
+ `__nnu__
+ (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
+ `fo
+(
+FILE
+ *);
+
+314 #i
+__POSIX_VISIBLE
+ >= 199209
+
+315
+ `po
+(
+FILE
+ *);
+
+316
+FILE
+ *
+ `pݒ
+(const *, const *);
+
+319 #i
+__POSIX_VISIBLE
+ >= 199506
+
+320
+ `ockfe
+(
+FILE
+ *);
+
+321
+ `rylockfe
+(
+FILE
+ *);
+
+322
+ `fuockfe
+(
+FILE
+ *);
+
+328
+ `gc_uocked
+(
+FILE
+ *);
+
+329
+ `gch_uocked
+();
+
+330
+ `putc_uocked
+(,
+FILE
+ *);
+
+331
+ `putch_uocked
+();
+
+334 #i
+__POSIX_VISIBLE
+ >= 200809
+
+335
+FILE
+ *
+ `fmemݒ
+(*,
+size_t
+, const *);
+
+336
+FILE
+ *
+ `ݒ_memam
+(**,
+size_t
+ *);
+
+339 #i
+__XPG_VISIBLE
+
+
+340 *
+ `mam
+(const *, const *);
+
+343 #i
+__POSIX_VISIBLE
+ >202405 ||
+__BSD_VISIBLE
+
+
+344
+ $artf
+(**
+__ri
+, const * __restrict, ...)
+
+345
+ `__ibu__
+((
+ $__fm__
+ (
+tf
+, 2, 3)))
+
+346
+ `__ibu__
+((
+ `__nnu__
+ (2)));
+
+347
+ $vartf
+(**
+__ri
+, cڡ * __ri,
+__va_li
+)
+
+348
+ `__ibu__
+((
+ $__fm__
+ (
+tf
+, 2, 0)))
+
+349
+ `__ibu__
+((
+ `__nnu__
+ (2)));
+
+351
+__END_DECLS
+
+
+358 #i
+__BSD_VISIBLE
+
+
+359
+__BEGIN_DECLS
+
+
+360 *
+ `fg
+(
+FILE
+ *,
+size_t
+ *);
+
+361
+ `urge
+(
+FILE
+ *);
+
+362
+ `gw
+(
+FILE
+ *);
+
+363
+ `putw
+(,
+FILE
+ *);
+
+364
+ `tbufr
+(
+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
+ #__sgc
+(
+p
+(--)->
+_r
+ < 0 ?
+ `__g
+: ()(*)->
+_p
+++))
+
+ )
+
+395
+__le
+
+ $__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
+ #__sof
+(
+p
+(()->
+_ags
+ &
+__SEOF
+!0)
+
+ )
+
+403
+ #__s
+(
+p
+(()->
+_ags
+ &
+__SERR
+!0)
+
+ )
+
+404
+ #__s
+(
+p
+(()()->
+_ags
+ &~(
+__SERR
+|
+__SEOF
+)))
+
+ )
+
+405
+ #__sfo
+(
+p
+()->
+_fe
+)
+
+ )
+
+407
+__ihaded
+;
+
+409
+ #of
+(
+p
+(!
+__ihaded
+ ?
+ `__sof
+: (
+of
+)))
+
+ )
+
+410
+ #
+(
+p
+(!
+__ihaded
+ ?
+ `__s
+: (
+
+)))
+
+ )
+
+411
+ #
+(
+p
+(!
+__ihaded
+ ?
+ `__s
+: (
+
+)))
+
+ )
+
+413 #i
+__POSIX_VISIBLE
+
+
+414
+ #fo
+(
+p
+(!
+__ihaded
+ ?
+ `__sfo
+: (
+fo
+)))
+
+ )
+
+417
+ #gc
+(
+
+(!
+__ihaded
+ ?
+ `__sgc
+(: (
+gc
+)())
+
+ )
+
+419 #i
+__BSD_VISIBLE
+
+
+424
+ #putc
+(
+x
+,
+
+(!
+__ihaded
+ ?
+ `__utc
+(x, fp: (
+putc
+)(x, fp))
+
+ )
+
+427 #i
+__POSIX_VISIBLE
+ >= 199506
+
+428
+ #gc_uocked
+(
+
+
+ `__sgc
+()
+
+ )
+
+433 #i
+__BSD_VISIBLE
+
+
+434
+ #putc_uocked
+(
+x
+,
+
+
+ `__utc
+(x, fp)
+
+ )
+
+438
+ #gch
+(
+ `gc
+(
+d
+)
+
+ )
+
+439
+ #putch
+(
+x
+
+ `putc
+(x,
+dout
+)
+
+ )
+
+440
+ #gch_uocked
+(
+ `gc_uocked
+(
+d
+)
+
+ )
+
+441
+ #putch_uocked
+(
+c
+
+ `putc_uocked
+(c,
+dout
+)
+
+ )
+
+ @/usr/include/stdlib.h
+
+35 #ide
+_STDLIB_H_
+
+
+36
+ #_STDLIB_H_
+
+
+ )
+
+38
+ ~<sys/cdefs.h
+>
+
+39
+ ~<sys/_nu.h
+>
+
+40
+ ~<mache/_tys.h
+>
+
+41 #i
+__BSD_VISIBLE
+
+
+42
+ ~<sys/tys.h
+>
+
+45 #idef
+_SIZE_T_DEFINED_
+
+
+46
+ #_SIZE_T_DEFINED_
+
+
+ )
+
+47
+__size_t
+
+ tsize_t
+;
+
+51 #i!
+defed
+(
+_WCHAR_T_DEFINED_
+&& !defed(
+__lulus
+)
+
+52
+ #_WCHAR_T_DEFINED_
+
+
+ )
+
+53
+__wch_t
+
+ twch_t
+;
+
+57
+ mqu
+;
+
+58
+ mm
+;
+
+59 }
+ tdiv_t
+;
+
+62
+ mqu
+;
+
+63
+ mm
+;
+
+64 }
+ tldiv_t
+;
+
+66 #i
+__ISO_C_VISIBLE
+ >= 1999
+
+68
+ mqu
+;
+
+69
+ mm
+;
+
+70 }
+ tdiv_t
+;
+
+73 #i
+__BSD_VISIBLE
+
+
+75
+quad_t
+
+ mqu
+;
+
+76
+quad_t
+
+ mm
+;
+
+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 #wng
+abs
+
+mao
+
+clides
+
+wh
+bs(
+y
+,
+undefg
+
+
+96
+__BEGIN_DECLS
+
+
+97
+__dd
+
+abt
+();
+
+98
+abs
+();
+
+99
+ex
+((*)());
+
+100
+ `of
+(const *);
+
+101
+ `oi
+(const *);
+
+102
+ `
+(const *);
+
+103 *
+ `bch
+(cڡ *, cڡ *,
+size_t
+, size_t,
+
+105 *
+ `oc
+(
+size_t
+, size_t);
+
+106
+div_t
+
+ `div
+(, );
+
+107
+__dd
+
+ `ex
+();
+
+108
+__dd
+
+ `_Ex
+();
+
+109
+ `
+(*);
+
+110 *
+ `gv
+(const *);
+
+111
+ `bs
+();
+
+112
+ldiv_t
+
+ `ldiv
+(, );
+
+113 *
+ `mloc
+(
+size_t
+);
+
+114 #i
+__BSD_VISIBLE
+
+
+115
+ $zo
+(*,
+size_t
+)
+
+116
+ `__ibu__
+ ((
+ `__bounded__
+(
+__bufr__
+,1,2)));
+
+117 *
+ `oc_c
+(
+size_t
+, size_t);
+
+118 *
+ `mloc_c
+(
+size_t
+);
+
+119 *
+ `oay
+(*,
+size_t
+, size_t, size_t);
+
+121
+ `qst
+(*,
+size_t
+, size_t, (*)(const *, const *));
+
+122
+ `nd
+();
+
+123 *
+ `loc
+(*,
+size_t
+);
+
+124
+ `d
+();
+
+125
+ `d_dmiic
+();
+
+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
+ `syem
+(const *);
+
+135
+size_t
+
+ `__mb_cur_max
+();
+
+136
+ `mbn
+(cڡ *,
+size_t
+);
+
+137
+size_t
+
+ `mbowcs
+(
+wch_t
+ *, const *, size_t);
+
+138
+ `womb
+(*,
+wch_t
+);
+
+139
+ `mbtowc
+(
+wch_t
+ *, cڡ *,
+size_t
+);
+
+140
+size_t
+
+ `wcombs
+(*, cڡ
+wch_t
+ *, size_t);
+
+145 #i
+__BSD_VISIBLE
+ ||
+__POSIX_VISIBLE
+ >199506 ||
+ `defed
+(
+_REENTRANT
+)
+
+146
+ `nd_r
+(*);
+
+149 #i
+__BSD_VISIBLE
+ ||
+__XPG_VISIBLE
+ >= 400
+
+150
+ `dnd48
+();
+
+151
+ `d48
+([3]);
+
+152
+ `jnd48
+([3]);
+
+153
+ `lcg48
+([7]);
+
+154
+ `lcg48_dmiic
+([7]);
+
+155
+ `̪d48
+();
+
+156
+ `mnd48
+();
+
+157
+ `Īd48
+([3]);
+
+158 *
+ `ed48
+([3]);
+
+159 *
+ `ed48_dmiic
+([3]);
+
+160
+ `d48
+();
+
+161
+ `d48_dmiic
+();
+
+163
+ `punv
+(*);
+
+170 #i
+__BSD_VISIBLE
+ ||
+__XPG_VISIBLE
+ < 700
+
+171 *
+ `ecvt
+(, , *, *);
+
+172 *
+ `fcvt
+(, , *, *);
+
+173 *
+ `gcvt
+(, , *);
+
+174 #i
+__BSD_VISIBLE
+ ||
+__XPG_VISIBLE
+ >= 420
+
+175 *
+ `mkmp
+(*);
+
+179 #i
+__BSD_VISIBLE
+ ||
+__XPG_VISIBLE
+ >= 420
+
+180
+ `a64l
+(const *);
+
+181 *
+ `l64a
+();
+
+183 *
+ $e
+(, *,
+size_t
+)
+
+184
+ `__ibu__
+((
+ `__bounded__
+ (
+__rg__
+,2,3)));
+
+185
+ `ndom
+();
+
+186 *
+ `te
+(*);
+
+187
+ `dom
+();
+
+188
+ `dom_dmiic
+();
+
+190 *
+ $th
+(const *, *)
+
+191
+ `__ibu__
+((
+ `__bounded__
+ (
+__mbys__
+,2,1024)));
+
+196 #i
+__BSD_VISIBLE
+ ||
+__XPG_VISIBLE
+ < 600
+
+197
+ `y
+();
+
+198 *
+ `vloc
+(
+size_t
+);
+
+205 #i
+__BSD_VISIBLE
+ ||
+__XPG_VISIBLE
+ >420 ||
+__POSIX_VISIBLE
+ >= 200809
+
+206
+ `mkemp
+(*);
+
+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
+ `igd_loc
+(
+size_t
+, size_t);
+
+233 #i
+__BSD_VISIBLE
+ ||
+__POSIX_VISIBLE
+ >= 200112
+
+234
+ `posix_memign
+(**,
+size_t
+, size_t);
+
+235
+ `nv
+(const *, const *, );
+
+236
+ `unnv
+(const *);
+
+238 #i
+__XPG_VISIBLE
+ >420 ||
+__POSIX_VISIBLE
+ >= 200112
+
+239 *
+ `ame
+();
+
+240
+ `g
+();
+
+241
+ `uock
+();
+
+243 #i
+__POSIX_VISIBLE
+ >= 200112
+
+244
+ `posix_ݒ
+();
+
+250 #i
+__BSD_VISIBLE
+ ||
+__POSIX_VISIBLE
+ >= 200809
+
+251 *
+ `mkdmp
+(*);
+
+254 #i
+__XPG_VISIBLE
+ >420 ||
+__POSIX_VISIBLE
+ >= 200809
+
+255
+ `gsubt
+(**, * const *, **);
+
+261 #i
+__POSIX_VISIBLE
+ >202405 ||
+__BSD_VISIBLE
+
+
+262
+ `mkoemp
+(*, );
+
+263 *
+ `loay
+(*,
+size_t
+, size_t);
+
+266 #i
+__BSD_VISIBLE
+
+
+267
+ #lo
+(
+n
+
+ `__but_lo
+)
+
+ )
+
+269 *
+ `gbsize
+(*, *);
+
+270 *
+ `cgp
+(*, const *, );
+
+271
+ `cgo
+();
+
+272
+ `cgt
+(**, **, const *);
+
+273
+ `cgf
+(**, **);
+
+274
+ `cgmch
+(*, const *);
+
+275
+ `cgxt
+(**, **);
+
+276
+ `cgnum
+(*, const *, *);
+
+277
+ `cgt
+(const *);
+
+278
+ `cgudb
+();
+
+279
+ `cgr
+(*, const *, **);
+
+280
+ `cgur
+(*, const *, **);
+
+282
+ `dm
+(, );
+
+283 *
+ `devme
+(
+dev_t
+,
+mode_t
+);
+
+284
+ `gldavg
+([], );
+
+287
+ `gogme
+();
+
+288
+ `rogme
+(const *);
+
+290 *
+subݏrg
+;
+
+292 *
+ `mkdmps
+(*, );
+
+293
+ `mkemps
+(*, );
+
+294
+ `mkoemps
+(*, , );
+
+296
+ `hpst
+(*,
+size_t
+, size_t, (*)(const *, const *));
+
+297
+ `mgest
+(*,
+size_t
+, size_t, (*)(const *, const *));
+
+298
+ `dixst
+(const **, , const *,
+
+300
+ `adixst
+(const **, , const *,
+
+303
+ `domdev
+();
+
+305
+ `um
+(const *, , , const **);
+
+307
+ $ro
+(const *, ...)
+
+308
+ `__ibu__
+((
+ `__fm__
+ (
+__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
+ut32_t
+
+ `c4ndom
+();
+
+316
+ut32_t
+
+ `c4ndom_unifm
+(uint32_t);
+
+317
+ $c4ndom_buf
+(*,
+size_t
+)
+
+318
+ `__ibu__
+((
+ `__bounded__
+ (
+__bufr__
+,1,2)));
+
+322
+__END_DECLS
+
+
+ @/usr/include/time.h
+
+41 #ide
+_TIME_H_
+
+
+42
+ #_TIME_H_
+
+
+ )
+
+44
+ ~<sys/cdefs.h
+>
+
+45
+ ~<sys/_nu.h
+>
+
+46
+ ~<sys/_tys.h
+>
+
+47
+ ~<sys/_time.h
+>
+
+49 #idef
+_CLOCK_T_DEFINED_
+
+
+50
+ #_CLOCK_T_DEFINED_
+
+
+ )
+
+51
+__ock_t
+
+ tock_t
+;
+
+54 #idef
+_TIME_T_DEFINED_
+
+
+55
+ #_TIME_T_DEFINED_
+
+
+ )
+
+56
+__time_t
+
+ ttime_t
+;
+
+59 #idef
+_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 #idef
+_CLOCKID_T_DEFINED_
+
+
+74
+ #_CLOCKID_T_DEFINED_
+
+
+ )
+
+75
+__ockid_t
+
+ tockid_t
+;
+
+78 #idef
+_TIMER_T_DEFINED_
+
+
+79
+ #_TIMER_T_DEFINED_
+
+
+ )
+
+80
+__tim_t
+
+ ttim_t
+;
+
+84 #i
+__POSIX_VISIBLE
+ >= 200112
+
+85 #idef
+_PID_T_DEFINED_
+
+
+86
+ #_PID_T_DEFINED_
+
+
+ )
+
+87
+__pid_t
+
+ tpid_t
+;
+
+91 #i
+__POSIX_VISIBLE
+ >= 200809
+
+92 #idef
+_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_yr
+;
+
+105
+ mtm_wday
+;
+
+106
+ mtm_yday
+;
+
+107
+ mtm_isd
+;
+
+108
+ mtm_gmtoff
+;
+
+109 *
+ mtm_ze
+;
+
+112
+__BEGIN_DECLS
+
+
+113 *
+asime
+(cڡ
+tm
+ *);
+
+114
+ock_t
+
+ock
+();
+
+115 *
+ime
+(cڡ
+time_t
+ *);
+
+116
+difime
+(
+time_t
+,ime_t);
+
+117
+tm
+ *
+gmtime
+(cڡ
+time_t
+ *);
+
+118
+tm
+ *
+loime
+(cڡ
+time_t
+ *);
+
+119
+time_t
+
+mktime
+(
+tm
+ *);
+
+120
+size_t
+
+ $rime
+(*
+__ri
+,
+size_t
+, const *__restrict,
+
+121 cڡ
+tm
+ *
+__ri
+)
+
+122
+ `__ibu__
+ ((
+ `__bounded__
+(
+__rg__
+,1,2)));
+
+123
+time_t
+
+ `time
+(time_t *);
+
+125 #i
+__XPG_VISIBLE
+ >= 300
+
+126
+daylight
+;
+
+127
+timeze
+;
+
+129 #i
+__XPG_VISIBLE
+ >= 400
+
+130 *
+ `time
+(cڡ *
+__ri
+, const *__restrict,
+
+131
+tm
+ *
+__ri
+);
+
+134 #i
+__POSIX_VISIBLE
+ >= 199506
+
+135 *
+ $asime_r
+(cڡ
+tm
+ *
+__ri
+, *__restrict)
+
+136
+ `__ibu__
+ ((
+ `__bounded__
+(
+__mbys__
+,2,26)));
+
+137 *
+ $ime_r
+(cڡ
+time_t
+ *, *)
+
+138
+ `__ibu__
+ ((
+ `__bounded__
+(
+__mbys__
+,2,26)));
+
+139
+tm
+ *
+ `gmtime_r
+(cڡ
+time_t
+ *
+__ri
+, tm *__restrict);
+
+140
+tm
+ *
+ `loime_r
+(cڡ
+time_t
+ *
+__ri
+, tm *__restrict);
+
+143 #i
+__POSIX_VISIBLE
+
+
+144 *
+tzme
+[2];
+
+145
+ `tzt
+();
+
+148 #i
+__POSIX_VISIBLE
+ >= 199309
+
+149
+ `ock_gs
+(
+ockid_t
+,
+timeec
+ *);
+
+150
+ `ock_gtime
+(
+ockid_t
+,
+timeec
+ *);
+
+151
+ `ock_ime
+(
+ockid_t
+, cڡ
+timeec
+ *);
+
+152
+ `nop
+(cڡ
+timeec
+ *, timespec *);
+
+155 #i
+__POSIX_VISIBLE
+ >= 200112
+
+156
+ `ock_guockid
+(
+pid_t
+,
+ockid_t
+ *);
+
+159 #i
+__POSIX_VISIBLE
+ >= 200809
+
+160
+size_t
+
+ $rime_l
+(*
+__ri
+,
+size_t
+, const *__restrict,
+
+161 cڡ
+tm
+ *
+__ri
+,
+lo_t
+)
+
+162
+ `__ibu__
+ ((
+ `__bounded__
+(
+__rg__
+,1,2)));
+
+165 #i
+__ISO_C_VISIBLE
+ >= 2011
+
+166
+ #TIME_UTC
+ 1
+
+ )
+
+167
+ `timeec_g
+(
+timeec
+ *
+_ts
+,
+_ba
+);
+
+170 #i
+__BSD_VISIBLE
+
+
+171
+ `tztwl
+();
+
+172
+time_t
+
+ `timol
+(
+tm
+ *);
+
+173
+time_t
+
+ `timegm
+(
+tm
+ *);
+
+174
+time_t
+
+ `timeoff
+(
+tm
+ *, const );
+
+176
+__END_DECLS
+
+
+ @/usr/include/unistd.h
+
+35 #ide
+_UNISTD_H_
+
+
+36
+ #_UNISTD_H_
+
+
+ )
+
+38
+ ~<sys/_nu.h
+>
+
+39
+ ~<sys/tys.h
+>
+
+40
+ ~<sys/unid.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 #idef
+_INTPTR_T_DEFINED_
+
+
+319
+ #_INTPTR_T_DEFINED_
+
+
+ )
+
+320
+___t
+
+ t_t
+;
+
+323
+__BEGIN_DECLS
+
+
+324
+__dd
+
+_ex
+();
+
+325
+acss
+(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
+ `exee
+(const *, const *, ...);
+
+335
+ $exep
+(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
+
+ `fk
+();
+
+344
+ `hcf
+(, );
+
+345 *
+ $gcwd
+(*,
+size_t
+)
+
+346
+ `__ibu__
+((
+ `__bounded__
+(
+__rg__
+,1,2)));
+
+347
+gid_t
+
+ `gegid
+();
+
+348
+uid_t
+
+ `geuid
+();
+
+349
+gid_t
+
+ `ggid
+();
+
+350
+ `ggroups
+(,
+gid_t
+ *);
+
+351 *
+ `glog
+();
+
+352
+pid_t
+
+ `gpg
+();
+
+353
+pid_t
+
+ `gpid
+();
+
+354
+pid_t
+
+ `gid
+();
+
+355
+uid_t
+
+ `guid
+();
+
+356
+ `iy
+();
+
+357
+ `lk
+(const *, const *);
+
+358
+off_t
+
+ `lek
+(, off_t, );
+
+359
+ `thcf
+(const *, );
+
+360 #i
+__BSD_VISIBLE
+
+
+361
+ `thct
+(, const *, , );
+
+363
+ `u
+();
+
+364
+ `pe
+(*);
+
+365
+ssize_t
+
+ $ad
+(, *,
+size_t
+)
+
+366
+ `__ibu__
+((
+ `__bounded__
+(
+__bufr__
+,2,3)));
+
+367
+ `rmd
+(const *);
+
+368
+ `tgid
+(
+gid_t
+);
+
+369
+ `tuid
+(
+uid_t
+);
+
+370
+ `p
+();
+
+371
+ `syscf
+();
+
+372
+pid_t
+
+ `tcgpg
+();
+
+373
+ `tcg
+(,
+pid_t
+);
+
+374 *
+ `yme
+();
+
+375
+ `uƚk
+(const *);
+
+376
+ssize_t
+
+ $wre
+(, cڡ *,
+size_t
+)
+
+377
+ `__ibu__
+((
+ `__bounded__
+(
+__bufr__
+,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
+
+ $cfr
+(, *,
+size_t
+)
+
+386
+ `__ibu__
+((
+ `__bounded__
+(
+__rg__
+,2,3)));
+
+387 #ide
+_GETOPT_DEFINED_
+
+
+388
+ #_GETOPT_DEFINED_
+
+
+ )
+
+389
+ `gt
+(, * const *, const *);
+
+390 *
+ݏrg
+;
+
+391
+
+,
+td
+,
+tt
+,
+et
+;
+
+395 #i
+__POSIX_VISIBLE
+ >199506 ||
+__XPG_VISIBLE
+
+
+396
+ `fsync
+();
+
+397
+ `run
+(,
+off_t
+);
+
+398
+ $glog_r
+(*,
+size_t
+)
+
+399
+ `__ibu__
+((
+ `__bounded__
+(
+__rg__
+,1,2)));
+
+400
+ssize_t
+
+ $adlk
+(cڡ *
+__ri
+, * __ri,
+size_t
+)
+
+401
+ `__ibu__
+ ((
+ `__bounded__
+(
+__rg__
+,2,3)));
+
+403 #i
+__POSIX_VISIBLE
+ >= 199506
+
+404
+ `fdasync
+();
+
+407 #i
+__XPG_VISIBLE
+ ||
+__BSD_VISIBLE
+
+
+408 *
+ `y
+(const *, const *);
+
+409
+ `fchd
+();
+
+410
+ `fchown
+(,
+uid_t
+,
+gid_t
+);
+
+411
+ `ghoid
+();
+
+412 *
+ $gwd
+(*)
+
+413
+ `__ibu__
+ ((
+ `__bounded__
+(
+__mbys__
+,1,1024)));
+
+414
+ `lchown
+(cڡ *,
+uid_t
+,
+gid_t
+);
+
+415
+ `mkemp
+(*);
+
+416 *
+ `mkmp
+(*);
+
+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
+ucds_t
+
+ `um
+(useconds_t, useconds_t);
+
+424
+ `up
+(
+ucds_t
+);
+
+425
+pid_t
+
+ `vfk
+();
+
+428 #i
+__POSIX_VISIBLE
+ >200809 ||
+__XPG_VISIBLE
+ >= 420
+
+429
+pid_t
+
+ `gpgid
+(pid_t);
+
+430
+pid_t
+
+ `gsid
+(pid_t);
+
+433 #i
+__XPG_VISIBLE
+ >= 500
+
+434
+ssize_t
+
+ $d
+(, *,
+size_t
+,
+off_t
+)
+
+435
+ `__ibu__
+((
+ `__bounded__
+(
+__bufr__
+,2,3)));
+
+436
+ssize_t
+
+ $pwre
+(, cڡ *,
+size_t
+,
+off_t
+)
+
+437
+ `__ibu__
+((
+ `__bounded__
+(
+__bufr__
+,2,3)));
+
+438
+ $yme_r
+(, *,
+size_t
+)
+
+439
+ `__ibu__
+((
+ `__bounded__
+(
+__rg__
+,2,3)));
+
+442 #i
+__BSD_VISIBLE
+ ||
+__XPG_VISIBLE
+ <= 500
+
+444
+ `brk
+(*);
+
+445
+ `chro
+(const *);
+
+446
+ `gdbsize
+();
+
+447
+ `ggesize
+();
+
+448 *
+ `gss
+(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
+ `symlk
+(const *, const *);
+
+458
+ $ghome
+(*,
+size_t
+)
+
+459
+ `__ibu__
+ ((
+ `__bounded__
+(
+__rg__
+,1,2)));
+
+460
+ `gid
+(
+gid_t
+);
+
+461
+ `uid
+(
+uid_t
+);
+
+464 #i
+__POSIX_VISIBLE
+ >= 200809
+
+465
+ `cst
+(, const *, , );
+
+466
+ `fchowt
+(, cڡ *,
+uid_t
+,
+gid_t
+, );
+
+467
+ `lk
+(, const *, , const *, );
+
+468
+ssize_t
+
+ $adlk
+(, cڡ *, *,
+size_t
+)
+
+469
+ `__ibu__
+ ((
+ `__bounded__
+(
+__rg__
+,3,4)));
+
+470
+ `symlk
+(const *, , const *);
+
+471
+ `uƚk
+(, const *, );
+
+474 #i
+__POSIX_VISIBLE
+ >202405 ||
+__BSD_VISIBLE
+
+
+475
+ `gy
+(*,
+size_t
+);
+
+477 #i
+__XPG_VISIBLE
+ >800 ||
+__BSD_VISIBLE
+
+
+478
+ `gsgid
+(
+gid_t
+ *, gid_t *, gid_t *);
+
+479
+ `gsuid
+(
+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
+ `pe2
+([2], );
+
+489 #i
+__BSD_VISIBLE
+
+
+490
+ `ac
+(const *);
+
+491
+ `oom
+();
+
+492
+ `y_checkss
+(const *, const *);
+
+493
+ `y_whash
+(cڡ *, cڡ *, *,
+size_t
+);
+
+494
+ `durshl
+();
+
+495 *
+ `fagor
+(
+u_t32_t
+);
+
+496
+ $gdomame
+(*,
+size_t
+)
+
+497
+ `__ibu__
+ ((
+ `__bounded__
+(
+__rg__
+,1,2)));
+
+498
+ `gdbcou
+();
+
+499
+ `ggroui
+(cڡ *,
+gid_t
+, gid_t *, *);
+
+500
+mode_t
+
+ `gmode
+(const *, mode_t);
+
+501
+pid_t
+
+ `gthrid
+();
+
+502
+ `gthame
+(
+pid_t
+, *,
+size_t
+);
+
+503 *
+ `gurshl
+();
+
+504
+ `groups
+(cڡ *,
+gid_t
+);
+
+505
+ `istugid
+();
+
+506 *
+ `mkdmp
+(*);
+
+507
+ `mkemps
+(*, );
+
+508
+ `nfssvc
+(, *);
+
+509
+ $of
+(*,
+size_t
+, , )
+
+510
+ `__ibu__
+ ((
+ `__bounded__
+(
+__rg__
+,1,2)));
+
+511
+ `qual
+(const *, , , *);
+
+512
+ `rcmd
+(**, , const *,
+
+514
+ `rcmd_af
+(**, , const *,
+
+516
+ `rcmdsh
+(**, , const *,
+
+518
+ `bo
+();
+
+519
+ `voke
+(const *);
+
+520
+ `esvpt
+(*);
+
+521
+ `esvpt_af
+(*, );
+
+522
+ `rurok
+(const *, , const *, const *);
+
+523
+ `tdomame
+(cڡ *,
+size_t
+);
+
+524
+ `tgroups
+(, cڡ
+gid_t
+ *);
+
+525
+ `thoid
+();
+
+526
+ `thome
+(cڡ *,
+size_t
+);
+
+527
+ `og
+(const *);
+
+528 *
+ `tmode
+(const *);
+
+529
+ `g
+(
+pid_t
+
+_pid
+,id_
+_pg
+);
+
+530
+ `hame
+(
+pid_t
+, const *);
+
+531
+ `turshl
+();
+
+532
+ `ofags
+(**,
+u_t32_t
+ *, u_int32_t *);
+
+533
+ `swl
+(
+cmd
+, cڡ *
+g
+,
+misc
+);
+
+534
+ `edge
+(const *, const *);
+
+535
+ `unve
+(const *, const *);
+
+536
+pid_t
+
+ `__tfk_thad
+(cڡ
+__tfk
+ *,
+size_t
+, (*)(*),
+
+539
+__END_DECLS
+
+
+ @/usr/include/machine/_types.h
+
+35 #ide
+_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
+defed
+(
+_KERNEL
+)
+
+55
+ sb_t
+ {
+
+56
+ mv
+[8];
+
+57 }
+ tb_t
+;
+
+61 sigd
+ t__t8_t
+;
+
+62
+ t__ut8_t
+;
+
+63
+ t__t16_t
+;
+
+64
+ t__ut16_t
+;
+
+65
+ t__t32_t
+;
+
+66
+ t__ut32_t
+;
+
+67
+ t__t64_t
+;
+
+68
+ t__ut64_t
+;
+
+71
+__t8_t
+
+ t__t_a8_t
+;
+
+72
+__ut8_t
+
+ t__ut_a8_t
+;
+
+73
+__t16_t
+
+ t__t_a16_t
+;
+
+74
+__ut16_t
+
+ t__ut_a16_t
+;
+
+75
+__t32_t
+
+ t__t_a32_t
+;
+
+76
+__ut32_t
+
+ t__ut_a32_t
+;
+
+77
+__t64_t
+
+ t__t_a64_t
+;
+
+78
+__ut64_t
+
+ t__ut_a64_t
+;
+
+81
+__t32_t
+
+ t__t_8_t
+;
+
+82
+__ut32_t
+
+ t__ut_8_t
+;
+
+83
+__t32_t
+
+ t__t_16_t
+;
+
+84
+__ut32_t
+
+ t__ut_16_t
+;
+
+85
+__t32_t
+
+ t__t_32_t
+;
+
+86
+__ut32_t
+
+ t__ut_32_t
+;
+
+87
+__t64_t
+
+ t__t_64_t
+;
+
+88
+__ut64_t
+
+ t__ut_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
+__ut64_t
+
+ t__utmax_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
+defed
+(
+__GNUC__
+) && __GNUC__ >= 3
+
+126
+__but_va_li
+
+ t__va_li
+;
+
+128 *
+ t__va_li
+;
+
+132 #ide
+__lulus
+
+
+133
+ t__wch_t
+;
+
+135
+ t__wt_t
+;
+
+136
+ t__ru_t
+;
+
+137 *
+ t__wns_t
+;
+
+138 *
+ t__wy_t
+;
+
+ @/usr/include/sys/_null.h
+
+8 #ide
+NULL
+
+
+9 #i!
+defed
+(
+__lulus
+)
+
+10
+ #NULL
+ ((*)0)
+
+ )
+
+11 #i
+__lulus
+ >= 201103L
+
+12
+ #NULL
+
+nuαr
+
+
+ )
+
+13 #i
+defed
+(
+__GNUG__
+)
+
+14
+ #NULL
+
+__nu
+
+
+ )
+
+16
+ #NULL
+ 0L
+
+ )
+
+ @/usr/include/sys/_time.h
+
+32 #ide
+_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 #ide
+_TIME_T_DEFINED_
+
+
+50
+ #_TIME_T_DEFINED_
+
+
+ )
+
+51
+__time_t
+
+ ttime_t
+;
+
+54 #ide
+_TIMESPEC_DECLARED
+
+
+55
+ #_TIMESPEC_DECLARED
+
+
+ )
+
+56
+ stimeec
+ {
+
+57
+time_t
+
+ mtv_c
+;
+
+58
+ mtv_nc
+;
+
+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
+ simec
+ {
+
+76
+timeec
+
+ m_rv
+;
+
+77
+timeec
+
+ m_vue
+;
+
+80
+ #TIMER_RELTIME
+ 0x0
+
+ )
+
+81
+ #TIMER_ABSTIME
+ 0x1
+
+ )
+
+ @/usr/include/sys/_types.h
+
+34 #ide
+_SYS__TYPES_H_
+
+
+35
+ #_SYS__TYPES_H_
+
+
+ )
+
+37
+ ~<mache/_tys.h
+>
+
+39
+__t64_t
+
+ t__blkt_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
+__ut32_t
+
+ t__fix_t
+;
+
+46
+__ut64_t
+
+ t__fsblkt_t
+;
+
+47
+__ut64_t
+
+ t__fsft_t
+;
+
+48
+__ut32_t
+
+ t__gid_t
+;
+
+49
+__ut32_t
+
+ t__id_t
+;
+
+50
+__ut32_t
+
+ t___addr_t
+;
+
+51
+__ut16_t
+
+ t___pt_t
+;
+
+52
+__ut64_t
+
+ t__o_t
+;
+
+53
+ t__key_t
+;
+
+54
+__ut32_t
+
+ t__mode_t
+;
+
+55
+__ut32_t
+
+ t__ƚk_t
+;
+
+56
+__t64_t
+
+ t__off_t
+;
+
+57
+__t32_t
+
+ t__pid_t
+;
+
+58
+__ut64_t
+
+ t__im_t
+;
+
+59
+__ut8_t
+
+ t___my_t
+;
+
+60
+__t32_t
+
+ t__gsz_t
+;
+
+61
+__ut32_t
+
+ t__sockn_t
+;
+
+62
+ t__sucds_t
+;
+
+63
+__t64_t
+
+ t__time_t
+;
+
+64
+__t32_t
+
+ t__tim_t
+;
+
+65
+__ut32_t
+
+ t__uid_t
+;
+
+66
+__ut32_t
+
+ t__ucds_t
+;
+
+73
+ m__mbe8
+[128];
+
+74
+__t64_t
+
+ m__mbeL
+;
+
+75 }
+ t__mbe_t
+;
+
+ @/usr/include/sys/cdefs.h
+
+38 #idef
+_SYS_CDEFS_H_
+
+
+39
+ #_SYS_CDEFS_H_
+
+
+ )
+
+41
+ ~<mache/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
+defed
+(
+__STDC__
+|| defed(
+__lulus
+)
+
+62
+ #__P
+(
+os
+o
+
+ )
+
+63
+ #__CONCAT
+(
+x
+,
+y
+x ##
+ )
+y
+
+64
+ #__STRING
+(
+x
+#x
+
+ )
+
+66
+ #__cڡ
+ cڡ
+
+ )
+
+67
+ #__sigd
+ sigd
+
+ )
+
+68
+ #__vީe
+ vީe
+
+ )
+
+69 #i
+defed
+(
+__lulus
+|| defed(
+__PCC__
+)
+
+70
+ #__le
+
+le
+
+
+ )
+
+72 #i!
+defed
+(
+__GNUC__
+)
+
+73
+ #__le
+
+
+ )
+
+78
+ #__P
+(
+os
+(
+
+ )
+
+79
+ #__CONCAT
+(
+x
+,
+y
+x
+ )
+y
+
+80
+ #__STRING
+(
+x
+"x"
+
+ )
+
+82 #i!
+defed
+(
+__GNUC__
+)
+
+83
+ #__cڡ
+
+
+ )
+
+84
+ #__le
+
+
+ )
+
+85
+ #__sigd
+
+
+ )
+
+86
+ #__vީe
+
+
+ )
+
+99 #i!
+__GNUC_PREREQ__
+(2, 5&& !
+defed
+(
+__PCC__
+)
+
+100
+ #__ibu__
+(
+x
+
+
+ )
+
+101 #i
+defed
+(
+__GNUC__
+&& !defed(
+__STRICT_ANSI__
+)
+
+102
+ #__dd
+
+__vީe
+
+
+ )
+
+103
+ #__pu
+
+__cڡ
+
+
+ )
+
+106
+ #__dd
+
+ `__ibu__
+((
+__nܑu__
+))
+
+ )
+
+107
+ #__pu
+
+ `__ibu__
+((
+__cڡ__
+))
+
+ )
+
+110 #i
+__GNUC_PREREQ__
+(2, 7)
+
+111
+ #__unud
+
+ `__ibu__
+((
+__unud__
+))
+
+ )
+
+113
+ #__unud
+
+
+ )
+
+116 #i
+__GNUC_PREREQ__
+(3, 1)
+
+117
+ #__ud
+
+ `__ibu__
+((
+__ud__
+))
+
+ )
+
+119
+ #__ud
+
+__unud
+
+
+ )
+
+122 #i
+__GNUC_PREREQ__
+(3,4)
+
+123
+ #__wn_unud_su
+
+ `__ibu__
+((
+__wn_unud_su__
+))
+
+ )
+
+125
+ #__wn_unud_su
+
+
+ )
+
+128 #i
+__GNUC_PREREQ__
+(3,3&& !
+defed
+(
+__g__
+)
+
+129
+ #__bounded
+(
+gs
+
+ `__ibu__
+ ((
+__bounded__
+rg))
+
+ )
+
+131
+ #__bounded
+(
+gs
+
+
+ )
+
+140 #i
+__GNUC_PREREQ__
+(4, 1)
+
+141
+ #__tus_twi
+
+ `__ibu__
+((
+tus_twi
+))
+
+ )
+
+143
+ #__tus_twi
+
+
+ )
+
+153 #ifde
+__GNUC__
+
+
+154 #i
+__GNUC_PREREQ__
+(4, 2)
+
+155
+ #__ly_le
+
+__le
+
+ `__ibu__
+((
+__gnu_le__
+))
+
+ )
+
+157
+ #__ly_le
+
+__le
+
+
+ )
+
+160
+ #__ly_le
+
+__le
+
+
+ )
+
+191 #i
+__GNUC_PREREQ__
+(2, 96)
+
+192
+ #__edi_ue
+(
+exp
+
+ `__but_ex
+((xp!0), 1)
+
+ )
+
+193
+ #__edi_l
+(
+exp
+
+ `__but_ex
+((xp!0), 0)
+
+ )
+
+195
+ #__edi_ue
+(
+exp
+(xp!0)
+
+ )
+
+196
+ #__edi_l
+(
+exp
+(xp!0)
+
+ )
+
+200 #ide
+__dd
+
+
+201
+ #__dd
+
+
+ )
+
+202
+ #__pu
+
+
+ )
+
+217 #i
+__GNUC_PREREQ__
+(2, 7||
+defed
+(
+__PCC__
+)
+
+218
+ #__cked
+
+ `__ibu__
+((
+__cked__
+))
+
+ )
+
+219
+ #__igd
+(
+x
+
+ `__ibu__
+((
+ `__igd__
+(x)))
+
+ )
+
+222 #i!
+__GNUC_PREREQ__
+(2, 8)
+
+223
+ #__exnsi__
+
+
+ )
+
+226 #i
+__GNUC_PREREQ__
+(3, 0)
+
+227
+ #__mloc
+
+ `__ibu__
+((
+__mloc__
+))
+
+ )
+
+229
+ #__mloc
+
+
+ )
+
+232 #i
+defed
+(
+__lulus
+)
+
+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__
+((
+ `__visiby__
+("deu")))
+
+ )
+
+242
+ #__dso_hidd
+
+ `__ibu__
+((
+ `__visiby__
+("hidd")))
+
+ )
+
+243
+ #__BEGIN_PUBLIC_DECLS
+ \
+
+244
+ `_Pgma
+("GCC visibyush(deu)"
+__BEGIN_EXTERN_C
+
+
+ )
+
+245
+ #__END_PUBLIC_DECLS
+
+__END_EXTERN_C
+
+ `_Pgma
+("GCC visiby")
+
+ )
+
+246
+ #__BEGIN_HIDDEN_DECLS
+ \
+
+247
+ `_Pgma
+("GCC visibyush(hidd)"
+__BEGIN_EXTERN_C
+
+
+ )
+
+248
+ #__END_HIDDEN_DECLS
+
+__END_EXTERN_C
+
+ `_Pgma
+("GCC visiby")
+
+ )
+
+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
+defed
+(
+_POSIX_SOURCE
+)
+
+364
+ #__POSIX_VISIBLE
+ 198808
+
+ )
+
+365
+ #__ISO_C_VISIBLE
+ 0
+
+ )
+
+373 #i
+defed
+(
+_ANSI_SOURCE
+&& !defed(
+__POSIX_VISIBLE
+) && \
+
+374 !
+ $defed
+(
+__XPG_VISIBLE
+)
+
+375
+ #__POSIX_VISIBLE
+ 0
+
+ )
+
+376
+ #__XPG_VISIBLE
+ 0
+
+ )
+
+377
+ #__ISO_C_VISIBLE
+ 1990
+
+ )
+
+384 #i
+ `defed
+(
+_ISOC11_SOURCE
+) || \
+
+385 (
+ `defed
+(
+__STDC_VERSION__
+) && __STDC_VERSION__ >= 201112) || \
+
+386 (
+ `defed
+(
+__lulus
+) && __cplusplus >= 201703)
+
+387 #unde
+__ISO_C_VISIBLE
+
+
+388
+ #__ISO_C_VISIBLE
+ 2011
+
+ )
+
+389 #i
+ `defed
+(
+_ISOC99_SOURCE
+) || \
+
+390 (
+ `defed
+(
+__STDC_VERSION__
+) && __STDC_VERSION__ >= 199901) || \
+
+391 (
+ `defed
+(
+__lulus
+) && __cplusplus >= 201103)
+
+392 #unde
+__ISO_C_VISIBLE
+
+
+393
+ #__ISO_C_VISIBLE
+ 1999
+
+ )
+
+401 #i!
+ `defed
+(
+_BSD_SOURCE
+) && \
+
+402 (
+ `defed
+(
+_ANSI_SOURCE
+|| defed(
+__XPG_VISIBLE
+||
+ $defed
+(
+__POSIX_VISIBLE
+))
+
+403
+ #__BSD_VISIBLE
+ 0
+
+ )
+
+409 #ide
+__XPG_VISIBLE
+
+
+410
+ #__XPG_VISIBLE
+ 800
+
+ )
+
+412 #ide
+__POSIX_VISIBLE
+
+
+413
+ #__POSIX_VISIBLE
+ 202405
+
+ )
+
+415 #ide
+__ISO_C_VISIBLE
+
+
+416
+ #__ISO_C_VISIBLE
+ 2017
+
+ )
+
+418 #ide
+__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 #ide
+_SYS_LIMITS_H_
+
+
+27
+ #_SYS_LIMITS_H_
+
+
+ )
+
+29
+ ~<sys/cdefs.h
+>
+
+34
+ ~<mache/lims.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
+ ~<mache/_t.h
+>
+
+100 #ide
+FLT_DIG
+
+
+101
+ #FLT_DIG
+
+__FLT_DIG
+
+
+ )
+
+103 #ide
+FLT_MAX
+
+
+104
+ #FLT_MAX
+
+__FLT_MAX
+
+
+ )
+
+106 #ide
+DBL_DIG
+
+
+107
+ #DBL_DIG
+
+__DBL_DIG
+
+
+ )
+
+109 #ide
+DBL_MAX
+
+
+110
+ #DBL_MAX
+
+__DBL_MAX
+
+
+ )
+
+114 #i
+__XPG_VISIBLE
+ < 500
+
+115 #ide
+FLT_MIN
+
+
+116
+ #FLT_MIN
+
+__FLT_MIN
+
+
+ )
+
+118 #ide
+DBL_MIN
+
+
+119
+ #DBL_MIN
+
+__DBL_MIN
+
+
+ )
+
+ @/usr/include/sys/types.h
+
+40 #ide
+_SYS_TYPES_H_
+
+
+41
+ #_SYS_TYPES_H_
+
+
+ )
+
+43
+ ~<sys/cdefs.h
+>
+
+44 #i
+__BSD_VISIBLE
+
+
+45
+ ~<sys/dn.h
+>
+
+47
+ ~<sys/_dn.h
+>
+
+50 #i
+__BSD_VISIBLE
+
+
+51
+ tu_ch
+;
+
+52
+ tu_sht
+;
+
+53
+ tu_t
+;
+
+54
+ tu_lg
+;
+
+56
+ tunch
+;
+
+57
+ tusht
+;
+
+58
+ tut
+;
+
+59
+ tulg
+;
+
+61
+__uid_t
+
+ tuid_t
+;
+
+62
+__gi_t
+
+ tgi_t
+;
+
+69 #idef
+__BIT_TYPES_DEFINED__
+
+
+70
+ #__BIT_TYPES_DEFINED__
+
+
+ )
+
+73 #idef
+_INT8_T_DEFINED_
+
+
+74
+ #_INT8_T_DEFINED_
+
+
+ )
+
+75
+__t8_t
+
+ tt8_t
+;
+
+78 #idef
+_UINT8_T_DEFINED_
+
+
+79
+ #_UINT8_T_DEFINED_
+
+
+ )
+
+80
+__ut8_t
+
+ tut8_t
+;
+
+83 #idef
+_INT16_T_DEFINED_
+
+
+84
+ #_INT16_T_DEFINED_
+
+
+ )
+
+85
+__t16_t
+
+ tt16_t
+;
+
+88 #idef
+_UINT16_T_DEFINED_
+
+
+89
+ #_UINT16_T_DEFINED_
+
+
+ )
+
+90
+__ut16_t
+
+ tut16_t
+;
+
+93 #idef
+_INT32_T_DEFINED_
+
+
+94
+ #_INT32_T_DEFINED_
+
+
+ )
+
+95
+__t32_t
+
+ tt32_t
+;
+
+98 #idef
+_UINT32_T_DEFINED_
+
+
+99
+ #_UINT32_T_DEFINED_
+
+
+ )
+
+100
+__ut32_t
+
+ tut32_t
+;
+
+103 #idef
+_INT64_T_DEFINED_
+
+
+104
+ #_INT64_T_DEFINED_
+
+
+ )
+
+105
+__t64_t
+
+ tt64_t
+;
+
+108 #idef
+_UINT64_T_DEFINED_
+
+
+109
+ #_UINT64_T_DEFINED_
+
+
+ )
+
+110
+__ut64_t
+
+ tut64_t
+;
+
+114
+__ut8_t
+
+ tu_t8_t
+;
+
+115
+__ut16_t
+
+ tu_t16_t
+;
+
+116
+__ut32_t
+
+ tu_t32_t
+;
+
+117
+__ut64_t
+
+ tu_t64_t
+;
+
+120
+__t64_t
+
+ tquad_t
+;
+
+121
+__ut64_t
+
+ tu_quad_t
+;
+
+123 #i
+__BSD_VISIBLE
+
+
+125
+__vaddr_t
+
+ tvaddr_t
+;
+
+126
+__ddr_t
+
+ tddr_t
+;
+
+127
+__vsize_t
+
+ tvsize_t
+;
+
+128
+__psize_t
+
+ tpsize_t
+;
+
+132
+__blkt_t
+
+ tblkt_t
+;
+
+133
+__blksize_t
+
+ tblksize_t
+;
+
+134 *
+ tddr_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
+
+ to_t
+;
+
+142
+__key_t
+
+ tkey_t
+;
+
+143
+__mode_t
+
+ tmode_t
+;
+
+144
+__ƚk_t
+
+ tƚk_t
+;
+
+145
+__im_t
+
+ tim_t
+;
+
+146
+__gsz_t
+
+ tgsz_t
+;
+
+147
+__uid_t
+
+ tuid_t
+;
+
+148
+__ucds_t
+
+ tucds_t
+;
+
+149
+__sucds_t
+
+ tsucds_t
+;
+
+150
+__fsblkt_t
+
+ tfsblkt_t
+;
+
+151
+__fsft_t
+
+ tfsft_t
+;
+
+156 #idef
+_CLOCK_T_DEFINED_
+
+
+157
+ #_CLOCK_T_DEFINED_
+
+
+ )
+
+158
+__ock_t
+
+ tock_t
+;
+
+161 #idef
+_CLOCKID_T_DEFINED_
+
+
+162
+ #_CLOCKID_T_DEFINED_
+
+
+ )
+
+163
+__ockid_t
+
+ tockid_t
+;
+
+166 #idef
+_PID_T_DEFINED_
+
+
+167
+ #_PID_T_DEFINED_
+
+
+ )
+
+168
+__pid_t
+
+ tpid_t
+;
+
+171 #idef
+_SIZE_T_DEFINED_
+
+
+172
+ #_SIZE_T_DEFINED_
+
+
+ )
+
+173
+__size_t
+
+ tsize_t
+;
+
+176 #idef
+_SSIZE_T_DEFINED_
+
+
+177
+ #_SSIZE_T_DEFINED_
+
+
+ )
+
+178
+__ssize_t
+
+ tssize_t
+;
+
+181 #idef
+_TIME_T_DEFINED_
+
+
+182
+ #_TIME_T_DEFINED_
+
+
+ )
+
+183
+__time_t
+
+ ttime_t
+;
+
+186 #idef
+_TIMER_T_DEFINED_
+
+
+187
+ #_TIMER_T_DEFINED_
+
+
+ )
+
+188
+__tim_t
+
+ ttim_t
+;
+
+191 #idef
+_OFF_T_DEFINED_
+
+
+192
+ #_OFF_T_DEFINED_
+
+
+ )
+
+193
+__off_t
+
+ toff_t
+;
+
+201 #i
+__BSD_VISIBLE
+ && !
+defed
+(
+_KERNEL
+)
+
+202
+__BEGIN_DECLS
+
+
+203
+off_t
+
+lek
+(, 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
+defed
+(
+__STDC__
+&& defed(
+_KERNEL
+)
+
+222
+ goc
+;
+
+223
+ gpg
+;
+
+224
+ gued
+;
+
+225
+ gruge
+;
+
+226
+ gfe
+;
+
+227
+ gbuf
+;
+
+228
+ gy
+;
+
+229
+ guio
+;
+
+232 #ifde
+_KERNEL
+
+
+233 #i
+defed
+(
+__GNUC__
+) || \
+
+234 (
+defed
+(
+__STDC_VERSION__
+&&
+ g__STDC_VERSION__
+ >= 199901)
+
+236
+ #l
+ 0
+
+ )
+
+237
+ #ue
+ 1
+
+ )
+
+242
+l
+ = 0,
+
+243
+ mue
+ = 1
+
+244 }
+ t_Bo
+;
+
+247
+ #l
+
+l
+
+
+ )
+
+248
+ #ue
+
+ue
+
+
+ )
+
+253
+ #bo
+
+_Bo
+
+
+ )
+
+256
+ #__bo_ue_l_e_defed
+ 1
+
+ )
+
+ @/usr/include/sys/unistd.h
+
+35 #ide
+_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__tfk
+ {
+
+67 *
+ mtf_tcb
+;
+
+68
+pid_t
+ *
+ mtf_tid
+;
+
+69 *
+ mtf_ack
+;
+
+73
+ s__kbd
+ {
+
+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 #ide
+_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 #idef
+_MACHINE_CDEFS_H_
+
+
+9
+ #_MACHINE_CDEFS_H_
+
+
+ )
+
+11
+ #__rg_s
+(
+s
+,
+sym
+) \
+
+12
+ `__asm__
+(".glob "
+ `__STRING
+(
+s
+) " ; " __STRING(alias) \
+
+13 " = "
+ `__STRING
+(
+sym
+))
+
+ )
+
+14
+ #__wk_s
+(
+s
+,
+sym
+) \
+
+15
+ `__asm__
+(".wk "
+ `__STRING
+(
+s
+) " ; " __STRING(alias) \
+
+16 " = "
+ `__STRING
+(
+sym
+))
+
+ )
+
+17
+ #__wn_ns
+(
+sym
+,
+msg
+) \
+
+18
+ `__asm__
+(".i .gnu.wng."
+ `__STRING
+(
+sym
+) \
+
+19 " ; .asci\""
+msg
+ "\" ; .xt")
+
+ )
+
+ @/usr/include/machine/limits.h
+
+34 #idef
+_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 #ide
+_SYS__ENDIAN_H_
+
+
+34
+ #_SYS__ENDIAN_H_
+
+
+ )
+
+36
+ ~<sys/_tys.h
+>
+
+38
+ #__FROM_SYS__ENDIAN
+
+
+ )
+
+39
+ ~<mache/dn.h
+>
+
+40 #unde
+__FROM_SYS__ENDIAN
+
+
+42
+ #_LITTLE_ENDIAN
+ 1234
+
+ )
+
+43
+ #_BIG_ENDIAN
+ 4321
+
+ )
+
+44
+ #_PDP_ENDIAN
+ 3412
+
+ )
+
+48
+ #__sw16g
+(
+x
+) \
+
+49 (
+__ut16_t
+)(((__ut16_t)(
+x
+& 0xffU<< 8 | ((__ut16_t)(x& 0xff00U>> 8)
+
+ )
+
+51
+ #__sw32g
+(
+x
+) \
+
+52 (
+__ut32_t
+)(((__ut32_t)(
+x
+) & 0xff) << 24 | \
+
+53 ((
+__ut32_t
+)(
+x
+) & 0xff00) << 8 | ((__uint32_t)(x) & 0xff0000) >> 8 |\
+
+54 ((
+__ut32_t
+)(
+x
+& 0xff000000>> 24)
+
+ )
+
+56
+ #__sw64g
+(
+x
+) \
+
+57 (
+__ut64_t
+)((((__ut64_t)(
+x
+) & 0xff) << 56) | \
+
+58 ((
+__ut64_t
+)(
+x
+) & 0xff00ULL) << 40 | \
+
+59 ((
+__ut64_t
+)(
+x
+) & 0xff0000ULL) << 24 | \
+
+60 ((
+__ut64_t
+)(
+x
+) & 0xff000000ULL) << 8 | \
+
+61 ((
+__ut64_t
+)(
+x
+) & 0xff00000000ULL) >> 8 | \
+
+62 ((
+__ut64_t
+)(
+x
+) & 0xff0000000000ULL) >> 24 | \
+
+63 ((
+__ut64_t
+)(
+x
+) & 0xff000000000000ULL) >> 40 | \
+
+64 ((
+__ut64_t
+)(
+x
+& 0xff00000000000000ULL>> 56)
+
+ )
+
+66 #ide
+__HAVE_MD_SWAP
+
+
+67
+__le
+
+__ut16_t
+
+
+68
+ $__sw16md
+(
+__ut16_t
+
+x
+)
+
+70 (
+ `__sw16g
+(
+x
+));
+
+71
+ }
+}
+
+73
+__le
+
+__ut32_t
+
+
+74
+ $__sw32md
+(
+__ut32_t
+
+x
+)
+
+76 (
+ `__sw32g
+(
+x
+));
+
+77
+ }
+}
+
+79
+__le
+
+__ut64_t
+
+
+80
+ $__sw64md
+(
+__ut64_t
+
+x
+)
+
+82 (
+ `__sw64g
+(
+x
+));
+
+83
+ }
+}
+
+86
+ #__sw16
+(
+x
+) \
+
+87 (
+__ut16_t
+)(
+ `__but_cڡt_p
+(
+x
+?
+ `__sw16g
+(x:
+ `__sw16md
+(x))
+
+ )
+
+88
+ #__sw32
+(
+x
+) \
+
+89 (
+__ut32_t
+)(
+ `__but_cڡt_p
+(
+x
+?
+ `__sw32g
+(x:
+ `__sw32md
+(x))
+
+ )
+
+90
+ #__sw64
+(
+x
+) \
+
+91 (
+__ut64_t
+)(
+ `__but_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
+ #__hte16
+(
+x
+((
+__ut16_t
+)(x))
+
+ )
+
+102
+ #__hte32
+(
+x
+((
+__ut32_t
+)(x))
+
+ )
+
+103
+ #__hte64
+(
+x
+((
+__ut64_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
+((
+__ut16_t
+)(x))
+
+ )
+
+126
+ #__htobe32
+(
+x
+((
+__ut32_t
+)(x))
+
+ )
+
+127
+ #__htobe64
+(
+x
+((
+__ut64_t
+)(x))
+
+ )
+
+128
+ #__hte16
+
+__sw16
+
+
+ )
+
+129
+ #__hte32
+
+__sw32
+
+
+ )
+
+130
+ #__hte64
+
+__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
+ #__htem16
+(
+_x
+,
+_v
+
+ `__swm16
+((_x), (_v))
+
+ )
+
+140
+ #__htem32
+(
+_x
+,
+_v
+
+ `__swm32
+((_x), (_v))
+
+ )
+
+141
+ #__htem64
+(
+_x
+,
+_v
+
+ `__swm64
+((_x), (_v))
+
+ )
+
+148 #ifde
+_KERNEL
+
+
+154 #ide
+__bemtoh16
+
+
+155
+ #__bemtoh16
+(
+_x
+
+ `__htobe16
+(*(
+__ut16_t
+ *)(_x))
+
+ )
+
+156
+ #__bemtoh32
+(
+_x
+
+ `__htobe32
+(*(
+__ut32_t
+ *)(_x))
+
+ )
+
+157
+ #__bemtoh64
+(
+_x
+
+ `__htobe64
+(*(
+__ut64_t
+ *)(_x))
+
+ )
+
+160 #ide
+__htobem16
+
+
+161
+ #__htobem16
+(
+_x
+,
+_v
+(*(
+__ut16_t
+ *)(_x
+ `__htobe16
+(_v))
+
+ )
+
+162
+ #__htobem32
+(
+_x
+,
+_v
+(*(
+__ut32_t
+ *)(_x
+ `__htobe32
+(_v))
+
+ )
+
+163
+ #__htobem64
+(
+_x
+,
+_v
+(*(
+__ut64_t
+ *)(_x
+ `__htobe64
+(_v))
+
+ )
+
+166 #ide
+__mtoh16
+
+
+167
+ #__mtoh16
+(
+_x
+
+ `__hte16
+(*(
+__ut16_t
+ *)(_x))
+
+ )
+
+168
+ #__mtoh32
+(
+_x
+
+ `__hte32
+(*(
+__ut32_t
+ *)(_x))
+
+ )
+
+169
+ #__mtoh64
+(
+_x
+
+ `__hte64
+(*(
+__ut64_t
+ *)(_x))
+
+ )
+
+172 #ide
+__htem16
+
+
+173
+ #__htem16
+(
+_x
+,
+_v
+(*(
+__ut16_t
+ *)(_x
+ `__hte16
+(_v))
+
+ )
+
+174
+ #__htem32
+(
+_x
+,
+_v
+(*(
+__ut32_t
+ *)(_x
+ `__hte32
+(_v))
+
+ )
+
+175
+ #__htem64
+(
+_x
+,
+_v
+(*(
+__ut64_t
+ *)(_x
+ `__hte64
+(_v))
+
+ )
+
+ @/usr/include/sys/endian.h
+
+37 #ide
+_SYS_ENDIAN_H_
+
+
+38
+ #_SYS_ENDIAN_H_
+
+
+ )
+
+40
+ ~<sys/cdefs.h
+>
+
+41
+ ~<sys/_dn.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
+ #hte16
+(
+x
+
+ `__hte16
+(x)
+
+ )
+
+57
+ #hte32
+(
+x
+
+ `__hte32
+(x)
+
+ )
+
+58
+ #hte64
+(
+x
+
+ `__hte64
+(x)
+
+ )
+
+61
+ #be16toh
+(
+x
+
+ `__htobe16
+(x)
+
+ )
+
+62
+ #be32toh
+(
+x
+
+ `__htobe32
+(x)
+
+ )
+
+63
+ #be64toh
+(
+x
+
+ `__htobe64
+(x)
+
+ )
+
+64
+ #16toh
+(
+x
+
+ `__hte16
+(x)
+
+ )
+
+65
+ #32toh
+(
+x
+
+ `__hte32
+(x)
+
+ )
+
+66
+ #64toh
+(
+x
+
+ `__hte64
+(x)
+
+ )
+
+69 #i
+__BSD_VISIBLE
+
+
+70
+ #sw16
+(
+x
+
+ `__sw16
+(x)
+
+ )
+
+71
+ #sw32
+(
+x
+
+ `__sw32
+(x)
+
+ )
+
+72
+ #sw64
+(
+x
+
+ `__sw64
+(x)
+
+ )
+
+74
+ #sw16_mui
+(
+v
+,
+n
+) do { \
+
+75
+__size_t
+
+__sw16_mui_n
+ = (
+n
+); \
+
+76
+__ut16_t
+ *
+__sw16_mui_v
+ = (
+v
+); \
+
+78
+__sw16_mui_n
+) { \
+
+79 *
+__sw16_mui_v
+ =
+ `sw16
+(*__swap16_multi_v); \
+
+80
+__sw16_mui_v
+++; \
+
+81
+__sw16_mui_n
+--; \
+
+83 } 0)
+
+ )
+
+86
+ #boh16
+(
+x
+
+ `__htobe16
+(x)
+
+ )
+
+87
+ #boh32
+(
+x
+
+ `__htobe32
+(x)
+
+ )
+
+88
+ #boh64
+(
+x
+
+ `__htobe64
+(x)
+
+ )
+
+89
+ #toh16
+(
+x
+
+ `__hte16
+(x)
+
+ )
+
+90
+ #toh32
+(
+x
+
+ `__hte32
+(x)
+
+ )
+
+91
+ #toh64
+(
+x
+
+ `__hte64
+(x)
+
+ )
+
+93 #ide
+hts
+
+
+95
+ #hts
+(
+x
+
+ `__htobe16
+(x)
+
+ )
+
+96
+ #htl
+(
+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
+ `htl
+((
+u_t32_t
+)(x))
+
+ )
+
+105
+ #HTONS
+(
+x
+(x
+ `hts
+((
+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
+ #htem16
+
+__htem16
+
+
+ )
+
+120
+ #htem32
+
+__htem32
+
+
+ )
+
+121
+ #htem64
+
+__htem64
+
+
+ )
+
+ @/usr/include/machine/endian.h
+
+27 #ide
+_MACHINE_ENDIAN_H_
+
+
+28
+ #_MACHINE_ENDIAN_H_
+
+
+ )
+
+30
+ #_BYTE_ORDER
+
+_LITTLE_ENDIAN
+
+
+ )
+
+32 #ide
+__FROM_SYS__ENDIAN
+
+
+33
+ ~<sys/dn.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%"