linije

Unnamed repository; edit this file 'description' to name the repository.
Дневник | Датотеке | Референце | ПРОЧИТ�ЈМЕ | ЛИЦЕ�Ц�

чување beafe36e931cb72eda9401ce2b76a31ff0b03a7d
�утор: Страхиња Радић <sr@strahinja.org>
Датум:   Wed, 30 Jul 2025 20:14:48 +0200

Initial import

Diffstat:
A.gitignore | 29+++++++++++++++++++++++++++++
AINSTALL | 41+++++++++++++++++++++++++++++++++++++++++
ALICENSE | 674+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
AMakefile | 58++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
AREADME | 42++++++++++++++++++++++++++++++++++++++++++
Aconfig.mk | 28++++++++++++++++++++++++++++
Acscope.out | 20875+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Adate | 1+
Adescription | 1+
Alib/makedate | 61+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Alib/makeversion | 66++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Alib/mkpack | 20++++++++++++++++++++
Alib/replacepat | 10++++++++++
Alinije.c | 1569+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Alocal.h.in | 7+++++++
Aowner | 1+
Asprites.png | 0
Asprites.xcf.xz | 0
Atags | 676+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Ater12.png | 0
Ater12.xcf.xz | 0
Aversion | 1+
Aversion.h.in | 7+++++++
измењених датотека: 23, додавања: 24167(+), бри�ања: 0(-)

diff --git a/.gitignore b/.gitignore @@ -0,0 +1,29 @@ +.cache +.gdbinit +*.session +.rebuild +*~ +*.bak +*.err +*.orig +*.rej +*.o +*.sig +*.swp +*.did +tags +**/tags +cscope.out +nohup.out +*.err +*.gz +*.xz +!*.xcf.xz +*.pdf +*.1 +PKGBUILD +linije +linije.1 +date +version +version.h diff --git a/INSTALL b/INSTALL @@ -0,0 +1,41 @@ +Prerequisites +============= + +* C compiler - defaults in config.mk +* libSDL v3 (SDL3, SDL3_image - as of 2025-07, build from source: + https://github.com/libsdl-org/SDL + https://github.com/libsdl-org/SDL_image + Confirmed as needed in OpenBSD and Alpine) + + +Install +------- + + $ git clone https://git.sr.ht/~strahinja/lav-sdl + $ cd lav-sdl + $ su + # make install + + +Persistent build configuration file +----------------------------------- + +The file config.mk will be sourced when building targets which also accept +configuration through environment variables. For example, CPPFLAGS and PREFIX +are specified in config.mk. + + +OpenBSD +------- + +Before running make(1), comment the _CPPFLAGS and INCLUDE definitions in +config.mk above the line with the "OpenBSD" comment and uncomment the ones below +it: + + #_CPPFLAGS = -D_DEFAULT_SOURCE -D_POSIX_C_SOURCE=200809L \ + # -D_XOPEN_SOURCE=700 + #INCLUDE = -I/usr/include + # OpenBSD + _CPPFLAGS = -D_DEFAULT_SOURCE -D_POSIX_C_SOURCE=200809L \ + -D_XOPEN_SOURCE=700 -D_BSD_SOURCE + #INCLUDE = -I/usr/local/include diff --git a/LICENSE b/LICENSE @@ -0,0 +1,674 @@ + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. <https://fsf.org/> + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + <one line to give the program's name and a brief idea of what it does.> + Copyright (C) <year> <name of author> + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <https://www.gnu.org/licenses/>. + +Also add information on how to contact you by electronic and paper mail. + + If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: + + <program> Copyright (C) <year> <name of author> + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, your program's commands +might be different; for a GUI interface, you would use an "about box". + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +<https://www.gnu.org/licenses/>. + + The GNU General Public License does not permit incorporating your program +into proprietary programs. If your program is a subroutine library, you +may consider it more useful to permit linking proprietary applications with +the library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. But first, please read +<https://www.gnu.org/licenses/why-not-lgpl.html>. diff --git a/Makefile b/Makefile @@ -0,0 +1,58 @@ +.POSIX: + +include config.mk + +.SUFFIXES: .c .o .h.in .h + +.h.in.h: + sh -c 'DATADIR=$(DATADIR) lib/replacepat $< $@' + +all: makedate makeversion $(PROG) + if [ -f .rebuild ]; then rm .rebuild; make -e all; else true; fi + +local.h: local.h.in + +date: + sh lib/makedate + +version: + sh lib/makeversion + +makedate: + sh lib/makedate -l + +makeversion: + sh lib/makeversion -l + +linije.o: linije.c local.h version.h + +version.h: version.h.in date version + +$(PROG): $(OBJS) $(SRC) $(HEADERS) + $(CC) $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) -o $@ $(OBJS) $(LIBS) + +clean: + rm -f $(PROG) $(OBJS) local.h version.h *~ + +install: all + find . \( -name '*.dat' -o -name '*.png' \) -exec sh -c 'umask 022; \ + $(INSTALL) -Dm 0644 {} $(DATADIR)/{}' shell \; + $(INSTALL) -Dm 0644 README $(DOCDIR)/README + $(INSTALL) -Dm 0644 LICENSE $(DOCDIR)/LICENSE + $(INSTALL) -Dm 0644 OFL.TXT $(DOCDIR)/OFL.TXT + $(INSTALL) -Dm 0755 $(PROG) $(BINDIR)/$(PROG) + +uninstall: + find "$(DATADIR)" -type f -exec rm -f {} + + rmdir $(DATADIR) 2>/dev/null || true + rm -f $(DOCDIR)/README + rm -f $(DOCDIR)/LICENSE + rm -f $(DOCDIR)/OFL.TXT + rmdir $(DOCDIR) 2>/dev/null || true + rm -f $(BINDIR)/$(PROG) + rmdir $(BINDIR) 2>/dev/null || true + +pack: all + sh -x lib/mkpack + +.PHONY: all clean install pack uninstall diff --git a/README b/README @@ -0,0 +1,42 @@ +Linije +====== + +Color lines clone + + +Install +------- + +See the file INSTALL in this repository. + + +License +------- + +linije - Color lines clone +Copyright (C) 2025 Strahinya Radich + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see <https://www.gnu.org/licenses/>. + +--- + +Sprite sheet sprites.png (source file sprites.xcf.xz) hand drawn/crafted in GIMP +by Strahinya Radich. + +Sprite sheet ter12.png (source file ter12.xcf.xz) created in GIMP using Terminus +font 4.49.1. Terminus font Copyright (C) 2020 Dimitar Toshkov Zhekov[1], +licensed under SIL Open Font License 1.1. See file OFL.TXT for more information. + + +[1]: http://terminus-font.sourceforge.net/ diff --git a/config.mk b/config.mk @@ -0,0 +1,28 @@ +#CC = cc +#CFLAGS = -Os -Wall -pedantic -std=c99 +CFLAGS = -O2 -Wall -pedantic -std=c99 +#CFLAGS = -Og -ggdb -Wall -pedantic -std=c99 +#_CPPFLAGS = -D_DEFAULT_SOURCE -D_POSIX_C_SOURCE=200809L \ +# -D_XOPEN_SOURCE=700 +#INCLUDE = -I/usr/include +# OpenBSD +_CPPFLAGS = -D_DEFAULT_SOURCE -D_POSIX_C_SOURCE=200809L \ + -D_XOPEN_SOURCE=700 -D_BSD_SOURCE +INCLUDE = -I/usr/local/include +INSTALL = install +LIBS = -lSDL3_image -lSDL3 -lm +SRC = linije.c +HEADERS = local.h +OBJS = linije.o +PREFIX = /usr/local +PROG = linije + +# Derived macros +BINDIR = $(PREFIX)/bin +CPPFLAGS = $(_CPPFLAGS) $(INCLUDE) +DATADIR = $(PREFIX)/share/$(PROG) +DOCDIR = $(PREFIX)/share/doc/$(PROG) +#MANPREFIX = $(PREFIX)/share/man +# OpenBSD +MANPREFIX = $(PREFIX)/man +#MANPAGE = $(PROG).1 diff --git a/cscope.out b/cscope.out @@ -0,0 +1,20875 @@ +cscope 15 $HOME/src/linije 0000112612 + @linije.c + +5  + ~<SDL3/SDL.h +> + +6  + ~<SDL3_image/SDL_image.h +> + +7  + ~<as£¹.h +> + +8  + ~<”ºo.h +> + +9  + ~<m©h.h +> + +10  + ~<¡d¬g.h +> + +11  + ~<¡dio.h +> + +12  + ~<¡dlib.h +> + +13  + ~<time.h +> + +14  + ~<uni¡d.h +> + +16  + ~"loÿl.h +" + +17  + ~"v”siÚ.h +" + +20  + #ANIM_SPEED + 100 + + ) + +23  + #FPS + 60 + + ) + +24  + #ANIM_STEPS + ( +ANIM_SPEED + * +FPS + / 1000) + + ) + +26  + #BUFSIZE + 4096 + + ) + +27  + #CELL_SIZE + 20 + + ) + +28  + #DEFAULT_WIDTH + 1280 + + ) + +29  + #DEFAULT_HEIGHT + 720 + + ) + +30  + #HELP_DIALOG_WIDTH + 900 + + ) + +31  + #HELP_DIALOG_HEIGHT + 450 + + ) + +32  + #GRID_WIDTH + 15 + + ) + +33  + #GRID_HEIGHT + 15 + + ) + +34  + #LOCATION_STACK_MAX + ( +GRID_WIDTH + * +GRID_HEIGHT +) + + ) + +35  + #MIN_POP_LEN + 5 + + ) + +37  + #POP_STRING_CELL_VALUE + 100 + + ) + +40  + #PRINT_BUFSIZE + 4096 + + ) + +41  + #PROGNAME + "lšije" + + ) + +42  + #TER12_WIDTH + 6 + + ) + +43  + #TER12_HEIGHT + 12 + + ) + +44  + #WIN_TITLE + "Lšije" + + ) + +46  + #MIN +( +a +, +b +è((×è< (b)è? (aè: (b)) + + ) + +47  + #MAX +( +a +, +b +è((×è> (b)è? (aè: (b)) + + ) + +48  + #INDEX +( +x +, +y +è((yè* +GRID_WIDTH + + (x)) + + ) + +49  + #INDEXFI +( +x +, +y +è((() + `æoÜ +(y)è* +GRID_WIDTH + + (()æoÜ(x))) + + ) + +50  + #VALNAME +( +n +è[n] = #n + + ) + +54 + mCELL_EMPTY +, + +55 + mCELL_RED +, + +56 + mCELL_BLUE +, + +57 + mCELL_GREEN +, + +58 + mCELL_PURPLE +, + +59 + mCELL_ORANGE +, + +60 + mCELL_SELECTED + + +64 + mSTATE_IDLE +, + +65 + mSTATE_SELECTION +, + +66 + mSTATE_MOVING +, + +67 + mSTATE_FAILURE +, + +68 + mSTATE_SUCCESS + + +71 cÚ¡ * + gûÎ_Çmes +[] = { + +72 +VALNAME +( +CELL_EMPTY +), + +73 +VALNAME +( +CELL_RED +), + +74 +VALNAME +( +CELL_BLUE +), + +75 +VALNAME +( +CELL_GREEN +), + +76 +VALNAME +( +CELL_PURPLE +), + +77 +VALNAME +( +CELL_ORANGE +), + +78 +VALNAME +( +CELL_SELECTED +), + +81 cÚ¡  + gcheck_five_d–�s +[][4] = { + +88 cÚ¡ * + g¡©e_desü�tiÚs +[] = { + +96 cÚ¡ * + gh–p_‹xt +[] = { + +99 "V”siÚ " +VERSION +, + +111 +NULL + + +115  + sAnim©iÚS�‹ + { + +116 +SDL_FPošt + + m¡¬t +; + +117 +SDL_FPošt + + mpos™iÚ +; + +118 +SDL_FPošt + + m’d +; + +119 +SDL_FPošt + + md–� +; + +120  + maùive +; + +121  + m¡• +; + +122  + mfš®_¡• +; + +125  + sC–l + { + +126  + mem±y +; + +127  + m¡¬tšg +; + +128  + m’dšg +; + +129  + m·th +; + +130 +SDL_FPošt + + mcoÜds +; + +131  + mcÚ‹Ás +; + +132  +C–l +* + mËá +; + +133  +C–l +* + mup +; + +134  +C–l +* + mright +; + +135  +C–l +* + mdown +; + +136  +C–l +* + m·th_sourû +; + +137  +C–l +* + m·th_Ãxt +; + +138  + m·th_di¡ +; + +141  + sS�‹ + { + +142  +Anim©iÚS�‹ + + mªim©iÚ +; + +143  +C–l +* + mgrid +; + +144  + mloÿtiÚ_poš‹r +; + +145 +SDL_Pošt +* + mloÿtiÚ_¡ack +; + +146 +SDL_FPošt + + mpoš‹r +; + +147  + mûÎ_sÿË_çùÜ +; + +148  + mdi¥Ïy_width +; + +149  + mdi¥Ïy_height +; + +150  + mfuÎ_sü“n +; + +151  + mh–p_shown +; + +152  + mmode +; + +153  +C–l +* + m·th_¡¬t +; + +154  +C–l +* + m·th_’d +; + +155  + m»d¿w +; + +156 +SDL_R’d”” +* + m»nd”” +; + +157  + mrušg +; + +158  + msü“n_width +; + +159  + msü“n_height +; + +160  + mscÜe +; + +161 +SDL_FPošt + + m£ËùiÚ_¡¬t +, + m£ËùiÚ_’d +; + +162 +SDL_Textu» +* + m¥r™es +; + +163 +SDL_Textu» +* + m‹r12_‹xtu» +; + +164 +SDL_Textu» +* + mbackground +; + +165 +SDL_Wšdow +* + mwšdow +; + +166  + m‹xt_sÿË_çùÜ +; + +169  +assign_poštFF +(cÚ¡ +SDL_FPošt +* +äom +, SDL_FPošt* +to +); + +170  +assign_poštIF +(cÚ¡ +SDL_Pošt +* +äom +, +SDL_FPošt +* +to +); + +171  +assign_pošt_xyIF +(cÚ¡  +x +, cÚ¡  +y +, +SDL_FPošt +* +to +); + +172  +ÿlcuÏ‹_d–� +( +S�‹ +* +¡©e +); + +173  +ÿlcuÏ‹_grid_Üigš +(cÚ¡  +S�‹ +* +¡©e +, * +sx +, * +sy +); + +174  +ÿlcuÏ‹_di¥Ïy_size +( +S�‹ +* +¡©e +); + +175  +check_five +( +S�‹ +* +¡©e +,  +C–l +* +c +); + +176  +þ—nup +( +S�‹ +* +¡©e +); + +177  +do_ex™ +(cÚ¡  +code +,  +S�‹ +* +¡©e +); + +178  +d¿w +( +S�‹ +* +¡©e +); + +179  +d¿w_background +( +S�‹ +* +¡©e +, +SDL_FReù +* +bg_»ù +); + +180  +d¿w_h–p_dŸlog +( +S�‹ +* +¡©e +); + +181  +d¿w_‹xt +( +S�‹ +* +¡©e +, cÚ¡  +x +, cÚ¡  +y +, + +182 cÚ¡  +fÚt_width +, cÚ¡  +fÚt_height +, +SDL_Textu» +* +fÚt_‹x +, + +183 cÚ¡ * +‹xt +, ...); + +184  +fžl_Œ�Ët +( +S�‹ +* +¡©e +); + +185  +fšd_shÜ‹¡_·th +( +C–l +* +c +, C–l* +sourû +, cÚ¡  +di¡ +); + +186  +g‘_¥r™e_xy +(cÚ¡  +ûÎ +, * +x +, * +y +); + +187  +grid_coÜd_to_sü“n_coÜd +(cÚ¡  +S�‹ +* +¡©e +, cÚ¡  +x +, + +188 cÚ¡  +y +, cÚ¡  +¡¬tx +, cÚ¡  +¡¬ty +, * +to_x +, + +189 * +to_y +); + +190  +grid_coÜd_to_sü“n_coÜdF +(cÚ¡  +S�‹ +* +¡©e +, cÚ¡  +x +, + +191 cÚ¡  +y +, cÚ¡  +¡¬tx +, cÚ¡  +¡¬ty +, * +to_x +, + +192 * +to_y +); + +193  +hªdË_þick +( +S�‹ +* +¡©e +); + +194  +hªdË_ev’t +( +S�‹ +* +¡©e +, +SDL_Ev’t +* +ev’t +); + +195  +š™_ûÎ +( +C–l +* +c +, cÚ¡ +SDL_FPošt +* +coÜds +); + +196  +š™_¡©e +( +S�‹ +* +¡©e +); + +197  +lßd_‹xtu»s +( +S�‹ +* +¡©e +); + +198  +loÿtiÚ_pÝ +( +S�‹ +* +¡©e +, +SDL_Pošt +* +loÿtiÚ +); + +199  +loÿtiÚ_push +( +S�‹ +* +¡©e +, cÚ¡ +SDL_Pošt +* +loÿtiÚ +); + +200  +m¬k_·th +( +C–l +* +c +); + +201  +Ãxt_¡• +( +S�‹ +* +¡©e +); + +202  +·s§bË +(cÚ¡  +S�‹ +* +¡©e +, cÚ¡  +x +, cÚ¡  +y +); + +203  +´št_m©rix +(cÚ¡  +C–l +* +M +); + +204  +´št_·th +( +C–l +* +c +); + +205  +»£t +( +S�‹ +* +¡©e +); + +206  +»£t_·th +( +C–l +* +grid +); + +207  +sü“n_coÜd_to_grid_coÜd +( +S�‹ +* +¡©e +, cÚ¡  +x +, cÚ¡  +y +, + +208 cÚ¡  +¡¬tx +, cÚ¡  +¡¬ty +, * +to_x +, * +to_y +); + +209  +sü“n_coÜd_to_grid_coÜdF +( +S�‹ +* +¡©e +, cÚ¡  +x +, + +210 cÚ¡  +y +, cÚ¡  +¡¬tx +, cÚ¡  +¡¬ty +, * +to_x +, + +211 * +to_y +); + +212  +¡•_ªim©iÚ +( +S�‹ +* +¡©e +); + +213 +SDL_Surçû +* +Œy_lßd +(cÚ¡ * +fž’ame +); + +216 + $assign_poštFF +(cÚ¡ +SDL_FPošt +* +äom +, SDL_FPošt* +to +) + +218 + `as£¹ +(( +äom + !ð +NULL +è&& ( +to + != NULL)); + +219 +to +-> +x + = () +äom +->x; + +220 +to +-> +y + = () +äom +->y; + +221 + } +} + +224 + $assign_poštIF +(cÚ¡ +SDL_Pošt +* +äom +, +SDL_FPošt +* +to +) + +226 + `as£¹ +(( +äom + !ð +NULL +è&& ( +to + != NULL)); + +227 +to +-> +x + = () +äom +->x; + +228 +to +-> +y + = () +äom +->y; + +229 + } +} + +232 + $assign_pošt_xyIF +(cÚ¡  +x +, cÚ¡  +y +, +SDL_FPošt +* +to +) + +234 + `as£¹ +( +to + !ð +NULL +); + +235 +to +-> +x + = ()x; + +236 +to +-> +y + = ()y; + +237 + } +} + +240 + $ÿlcuÏ‹_d–� +( +S�‹ +* +¡©e +) + +242  +Anim©iÚS�‹ +* +ªim©iÚ +; + +244 + `as£¹ +( +¡©e + !ð +NULL +); + +245 +ªim©iÚ + = & +¡©e +->animation; + +246 +ªim©iÚ +-> +d–� +. +x + + +247 ð + `çbsf +( +ªim©iÚ +-> +’d +. +x + -‡nim©iÚ-> +¡¬t +.xè/ +ANIM_STEPS +; + +248 ià( +ªim©iÚ +-> +’d +. +x + <‡nim©iÚ-> +¡¬t +.x) + +249 +ªim©iÚ +-> +d–� +. +x + *= -1; + +250 +ªim©iÚ +-> +d–� +. +y + + +251 ð + `çbsf +( +ªim©iÚ +-> +’d +. +y + -‡nim©iÚ-> +¡¬t +.yè/ +ANIM_STEPS +; + +252 ià( +ªim©iÚ +-> +’d +. +y + <‡nim©iÚ-> +¡¬t +.y) + +253 +ªim©iÚ +-> +d–� +. +y + *= -1; + +254 + `SDL_LogDebug +( +SDL_LOG_CATEGORY_APPLICATION +, + +255 "ÿlcuÏ‹_d–�: (%0.2f, %0.2f)", +ªim©iÚ +-> +d–� +. +x +, + +256 +ªim©iÚ +-> +d–� +. +y +); + +257 + } +} + +260 + $ÿlcuÏ‹_grid_Üigš +(cÚ¡  +S�‹ +* +¡©e +, * +sx +, * +sy +) + +262  +cx +, +cy +; + +264 + `as£¹ +(( +¡©e + !ð +NULL +è&& ( +sx + !ðNULLè&& ( +sy + != NULL)); + +265 +cx + = +¡©e +-> +sü“n_width + / 2; + +266 +cy + = +¡©e +-> +sü“n_height + / 2; + +268 * +sx + = +cx + - ( +¡©e +-> +ûÎ_sÿË_çùÜ + * +GRID_WIDTH + * +CELL_SIZE +) / 2; + +269 * +sy + = +cy + - ( +¡©e +-> +ûÎ_sÿË_çùÜ + * +GRID_HEIGHT + * +CELL_SIZE +) / 2; + +270 + } +} + +273 + $ÿlcuÏ‹_di¥Ïy_size +( +S�‹ +* +¡©e +) + +275 + `as£¹ +( +¡©e + !ð +NULL +); + +276 ià(! + `SDL_G‘R’d”Ou�utSize +( +¡©e +-> +»nd”” +, &¡©e-> +di¥Ïy_width +, + +277 & +¡©e +-> +di¥Ïy_height +)) + +279 + `SDL_LogE¼Ü +( +SDL_LOG_CATEGORY_ERROR +, + +281 + `do_ex™ +(1, +¡©e +); + +283 + `SDL_LogDebug +( +SDL_LOG_CATEGORY_APPLICATION +, + +284 "ou�uˆdi¥Ïy size: (%d, %d)", +¡©e +-> +di¥Ïy_width +, + +285 +¡©e +-> +di¥Ïy_height +); + +286 + } +} + +289 + $check_five +( +S�‹ +* +¡©e +,  +C–l +* +c +) + +291  +C–l +* +cu¼’t + = +NULL +; + +292 +SDL_FPošt + +¡¬t +, +’d +; + +293  +x +, +y +, +Ën +; + +294  +i +; + +296 +i + = 0; + +297 +check_five_loÝ +: + +298 + `assign_poštFF +(& +c +-> +coÜds +, & +¡¬t +); + +299 + `assign_poštFF +(& +c +-> +coÜds +, & +’d +); + +300 +x + = +c +-> +coÜds +.x; + +301 +y + = +c +-> +coÜds +.y; + +302 + `SDL_LogDebug +( +SDL_LOG_CATEGORY_APPLICATION +, "Deltas: %d, %d", + +303 +check_five_d–�s +[ +i +][0], check_five_deltas[i][1]); + +304 +Ën + = 1; + +305 ( +x + >ð0 && +y + >ð0è&& (x < +GRID_WIDTH + && y < +GRID_HEIGHT +)) + +307 + `SDL_LogDebug +( +SDL_LOG_CATEGORY_APPLICATION +, "Aˆ(%d, %d): %s", +x +, + +308 +y +, +ûÎ_Çmes +[ +¡©e +-> +grid +[ + `INDEX +( +x +, y)]. +cÚ‹Ás +]); + +309 ià( +¡©e +-> +grid +[ + `INDEX +( +x +, +y +)]. +cÚ‹Ás + =ð +c +->contents) + +311 + `assign_pošt_xyIF +( +x +, +y +, & +¡¬t +); + +312 +Ën +++; + +316 +x + +ð +check_five_d–�s +[ +i +][0]; + +317 +y + +ð +check_five_d–�s +[ +i +][1]; + +319 +x + = +c +-> +coÜds +.x + +check_five_d–�s +[ +i +][2]; + +320 +y + = +c +-> +coÜds +.y + +check_five_d–�s +[ +i +][3]; + +321 + `SDL_LogDebug +( +SDL_LOG_CATEGORY_APPLICATION +, "Deltas: %d, %d", + +322 +check_five_d–�s +[ +i +][2], check_five_deltas[i][3]); + +323 ( +x + >ð0 && +y + >ð0è&& (x < +GRID_WIDTH + && y < +GRID_HEIGHT +)) + +325 + `SDL_LogDebug +( +SDL_LOG_CATEGORY_APPLICATION +, "Aˆ(%d, %d): %s", +x +, + +326 +y +, +ûÎ_Çmes +[ +¡©e +-> +grid +[ + `INDEX +( +x +, y)]. +cÚ‹Ás +]); + +327 ià( +¡©e +-> +grid +[ + `INDEX +( +x +, +y +)]. +cÚ‹Ás + =ð +c +->contents) + +329 + `assign_pošt_xyIF +( +x +, +y +, & +’d +); + +330 +Ën +++; + +334 +x + +ð +check_five_d–�s +[ +i +][2]; + +335 +y + +ð +check_five_d–�s +[ +i +][3]; + +337 ià( +Ën + > +MIN_POP_LEN +) + +339 + `SDL_LogDebug +( +SDL_LOG_CATEGORY_APPLICATION +, + +342 +¡¬t +. +x +, s�¹. +y +, +’d +.x,ƒnd.y); + +344 + `SDL_LogDebug +( +SDL_LOG_CATEGORY_APPLICATION +, + +346 +¡¬t +. +y +, +’d +.y, +check_five_d–�s +[ +i +][3], + +347 +check_five_d–�s +[ +i +][3]); + +348 + `SDL_LogDebug +( +SDL_LOG_CATEGORY_APPLICATION +, + +350 +¡¬t +. +x +, +’d +.x, +check_five_d–�s +[ +i +][2], + +351 +check_five_d–�s +[ +i +][2]); + +352 +x + = +¡¬t +.x; + +353 +y + = +¡¬t +.y; + +356 +cu¼’t + = & +¡©e +-> +grid +[ + `INDEX +( +x +, +y +)]; + +357 + `SDL_LogDebug +( +SDL_LOG_CATEGORY_APPLICATION +, + +359 +cu¼’t +-> +coÜds +. +x +, + +360 +cu¼’t +-> +coÜds +. +y +, + +361 +x +, +y +, + +362 +ûÎ_Çmes +[ +cu¼’t +-> +cÚ‹Ás +]); + +363 +cu¼’t +-> +cÚ‹Ás + = +CELL_EMPTY +; + +364 +cu¼’t +-> +em±y + = 1; + +365 + `SDL_LogDebug +( +SDL_LOG_CATEGORY_APPLICATION +, + +367 +cu¼’t +-> +coÜds +. +x +, + +368 +cu¼’t +-> +coÜds +. +y +, + +369 +ûÎ_Çmes +[ +cu¼’t +-> +cÚ‹Ás +]); + +370 +x + +ð +check_five_d–�s +[ +i +][2]; + +371 +y + +ð +check_five_d–�s +[ +i +][3]; + +373 !(( +x + =ð +’d +.x + +check_five_d–�s +[ +i +][2]) + +374 && ( +y + =ð +’d +.y + +check_five_d–�s +[ +i +][3]))); + +376 +¡©e +-> +scÜe + +ð +Ën + * +POP_STRING_CELL_VALUE +; + +377  +check_five_fšish +; + +381 + `SDL_LogDebug +( +SDL_LOG_CATEGORY_APPLICATION +, + +382 "check_five:†’ = %d,‚Ù…Ýpšg", +Ën +); + +384 +i +++; + +385 ià( +i + < ( +check_five_d–�s +) / (check_five_deltas[0])) + +386  +check_five_loÝ +; + +388 + `fžl_Œ�Ët +( +¡©e +); + +390 +check_five_fšish +: + +391 +¡©e +-> +mode + = +STATE_IDLE +; + +392 + } +} + +395 + $þ—nup +( +S�‹ +* +¡©e +) + +397 + `as£¹ +( +¡©e + !ð +NULL +); + +399 + `ä“ +( +¡©e +-> +loÿtiÚ_¡ack +); + +400 + `ä“ +( +¡©e +-> +grid +); + +402 ià( +¡©e +-> +background +) + +403 + `SDL_De¡royTextu» +( +¡©e +-> +background +); + +404 ià( +¡©e +-> +‹r12_‹xtu» +) + +405 + `SDL_De¡royTextu» +( +¡©e +-> +‹r12_‹xtu» +); + +406 ià( +¡©e +-> +¥r™es +) + +407 + `SDL_De¡royTextu» +( +¡©e +-> +¥r™es +); + +408 ià( +¡©e +-> +»nd”” +) + +409 + `SDL_De¡royR’d”” +( +¡©e +-> +»nd”” +); + +410 ià( +¡©e +-> +wšdow +) + +411 + `SDL_De¡royWšdow +( +¡©e +-> +wšdow +); + +413 + `SDL_Qu™ +(); + +414 + } +} + +417 + $do_ex™ +(cÚ¡  +code +,  +S�‹ +* +¡©e +) + +419 + `þ—nup +( +¡©e +); + +420 + `ex™ +( +code +); + +421 + } +} + +424 + $d¿w +( +S�‹ +* +¡©e +) + +426  +C–l +* +c + = +NULL +; + +427 +SDL_FReù + +bg_»ù +, +ûÎ_»ù +; + +428 +SDL_FReù + +de¡_»ù +; + +429  +x +, +y +; + +430  +üx +, +üy +; + +431  +drx +, +dry +; + +432  +¡¬tx +, +¡¬ty +; + +434 + `as£¹ +( +¡©e + !ð +NULL +); + +435 + `as£¹ +( +¡©e +-> +ûÎ_sÿË_çùÜ + != 0.0f); + +437 + `ÿlcuÏ‹_grid_Üigš +( +¡©e +, & +¡¬tx +, & +¡¬ty +); + +439 +bg_»ù +. +x + = 0; + +440 +bg_»ù +. +y + = 0; + +441 +bg_»ù +. +w + = +¡©e +-> +ûÎ_sÿË_çùÜ + * ( +CELL_SIZE + * +GRID_WIDTH + + 1); + +442 +bg_»ù +. +h + = +¡©e +-> +ûÎ_sÿË_çùÜ + * ( +CELL_SIZE + * +GRID_HEIGHT + + 1); + +444 + `SDL_S‘R’d”D¿wCÞÜ +( +¡©e +-> +»nd”” +, 0, 0, 0, +SDL_ALPHA_OPAQUE +); + +445 + `SDL_R’d”Cˬ +( +¡©e +-> +»nd”” +); + +448 ià(! +¡©e +-> +background +) + +449 + `d¿w_background +( +¡©e +, & +bg_»ù +); + +452 +de¡_»ù +. +x + = +¡¬tx +; + +453 +de¡_»ù +. +y + = +¡¬ty +; + +454 +de¡_»ù +. +w + = +bg_»ù +.w; + +455 +de¡_»ù +. +h + = +bg_»ù +.h; + +456 + `SDL_R’d”Lše +( +¡©e +-> +»nd”” +, 1, 1, 50, 50); + +457 + `SDL_R’d”Textu» +( +¡©e +-> +»nd”” +, s�‹-> +background +, & +bg_»ù +, + +458 & +de¡_»ù +); + +461 +ûÎ_»ù +. +w + = +CELL_SIZE +; + +462 +ûÎ_»ù +. +h + = +CELL_SIZE +; + +463 +de¡_»ù +. +w + = +¡©e +-> +ûÎ_sÿË_çùÜ + * +CELL_SIZE +; + +464 +de¡_»ù +. +h + = +¡©e +-> +ûÎ_sÿË_çùÜ + * +CELL_SIZE +; + +465  +y + = 0; y < +GRID_HEIGHT +; y++) + +466  +x + = 0; x < +GRID_WIDTH +; x++) + +468 +c + = & +¡©e +-> +grid +[ + `INDEX +( +x +, +y +)]; + +469 ià( +c +-> +cÚ‹Ás + =ð +CELL_EMPTY +) + +472 + `g‘_¥r™e_xy +( +c +-> +cÚ‹Ás +, & +üx +, & +üy +); + +473 +ûÎ_»ù +. +x + = +üx +; + +474 +ûÎ_»ù +. +y + = +üy +; + +475 ià( +c +-> +·th +) + +477 + `grid_coÜd_to_sü“n_coÜd +( +¡©e +, + +478 +¡©e +-> +ªim©iÚ +. +pos™iÚ +. +x +, + +479 +¡©e +-> +ªim©iÚ +. +pos™iÚ +. +y +, +¡¬tx + + 1, + +480 +¡¬ty + + 1, & +drx +, & +dry +); + +484 + `grid_coÜd_to_sü“n_coÜd +( +¡©e +, +x +, +y +, + +485 +¡¬tx + + 1, +¡¬ty + + 1, & +drx +, & +dry +); + +487 +de¡_»ù +. +x + = +drx +; + +488 +de¡_»ù +. +y + = +dry +; + +489 + `SDL_R’d”Textu» +( +¡©e +-> +»nd”” +, s�‹-> +¥r™es +, + +490 & +ûÎ_»ù +, & +de¡_»ù +); + +494 ià( +¡©e +-> +£ËùiÚ_¡¬t +. +x + != -1) + +496 + `g‘_¥r™e_xy +( +CELL_SELECTED +, & +üx +, & +üy +); + +497 +ûÎ_»ù +. +x + = +üx +; + +498 +ûÎ_»ù +. +y + = +üy +; + +499 + `grid_coÜd_to_sü“n_coÜd +( +¡©e +, s�‹-> +£ËùiÚ_¡¬t +. +x +, + +500 +¡©e +-> +£ËùiÚ_¡¬t +. +y +, +¡¬tx + + 1, +¡¬ty + + 1, & +drx +, + +501 & +dry +); + +502 +de¡_»ù +. +x + = +drx +; + +503 +de¡_»ù +. +y + = +dry +; + +504 + `SDL_R’d”Textu» +( +¡©e +-> +»nd”” +, s�‹-> +¥r™es +, & +ûÎ_»ù +, + +505 & +de¡_»ù +); + +509 + `d¿w_‹xt +( +¡©e +, 0, + +510 +¡©e +-> +sü“n_height + - s�‹-> +‹xt_sÿË_çùÜ + * +TER12_HEIGHT +, + +511 +TER12_WIDTH +, +TER12_HEIGHT +, +¡©e +-> +‹r12_‹xtu» +, + +512 "ScÜe: %06u F1 = H–° S�tus: %s", +¡©e +-> +scÜe +, + +513 +¡©e_desü�tiÚs +[ +¡©e +-> +mode +]); + +515 ià( +¡©e +-> +h–p_shown +) + +516 + `d¿w_h–p_dŸlog +( +¡©e +); + +522 + `SDL_R’d”P»£Á +( +¡©e +-> +»nd”” +); + +523 + } +} + +526 + $d¿w_background +( +S�‹ +* +¡©e +, +SDL_FReù +* +bg_»ù +) + +528 cÚ¡ +SDL_Di¥ÏyMode +* +mode +; + +529 +SDL_FReù + +ûÎ_»ù +, +de¡_»ù +; + +530 +SDL_Di¥ÏyID + +di¥Ïy +; + +531  +üx +, +üy +; + +532  +drx +, +dry +; + +533  +x +, +y +; + +535 + `as£¹ +(( +¡©e + !ð +NULL +è&& ( +bg_»ù + != NULL)); + +536 + `as£¹ +( +¡©e +-> +ûÎ_sÿË_çùÜ + != 0.0f); + +538 ià(( +di¥Ïy + = + `SDL_G‘Di¥ÏyFÜWšdow +( +¡©e +-> +wšdow +)) == 0) + +540 + `SDL_LogE¼Ü +( +SDL_LOG_CATEGORY_ERROR +, + +541 "SDL_G‘Di¥ÏyFÜWšdow fažed: %s", + `SDL_G‘E¼Ü +()); + +542 + `do_ex™ +(1, +¡©e +); + +545 ià(( +mode + = + `SDL_G‘Cu¼’tDi¥ÏyMode +( +di¥Ïy +)è=ð +NULL +) + +547 + `SDL_LogE¼Ü +( +SDL_LOG_CATEGORY_ERROR +, + +548 "SDL_G‘Cu¼’tDi¥ÏyMod�çžed: %s", + `SDL_G‘E¼Ü +()); + +549 + `do_ex™ +(1, +¡©e +); + +552 +¡©e +-> +background + = + `SDL_C»©eTextu» +(¡©e-> +»nd”” +, +mode +-> +fÜm© +, + +553 +SDL_TEXTUREACCESS_TARGET +, +bg_»ù +-> +w +, bg_»ù-> +h +); + +554 ià(! +¡©e +-> +background +) + +556 + `SDL_LogE¼Ü +( +SDL_LOG_CATEGORY_ERROR +, + +557 "SDL_C»©eTextu» fažed: %s", + `SDL_G‘E¼Ü +()); + +558 + `do_ex™ +(1, +¡©e +); + +560 ià(! + `SDL_S‘R’d”T¬g‘ +( +¡©e +-> +»nd”” +, s�‹-> +background +)) + +562 + `SDL_LogE¼Ü +( +SDL_LOG_CATEGORY_ERROR +, + +563 "SDL_S‘R’d”T¬g‘ fažed: %s", + `SDL_G‘E¼Ü +()); + +564 + `do_ex™ +(1, +¡©e +); + +567 +de¡_»ù +. +w + = +¡©e +-> +ûÎ_sÿË_çùÜ + * +CELL_SIZE +; + +568 +de¡_»ù +. +h + = +¡©e +-> +ûÎ_sÿË_çùÜ + * +CELL_SIZE +; + +569 + `g‘_¥r™e_xy +( +CELL_EMPTY +, & +üx +, & +üy +); + +570 +ûÎ_»ù +. +x + = +üx +; + +571 +ûÎ_»ù +. +y + = +üy +; + +572 +ûÎ_»ù +. +w + = +CELL_SIZE +; + +573 +ûÎ_»ù +. +h + = +CELL_SIZE +; + +574  +y + = 0; y < +GRID_HEIGHT +; y++) + +575  +x + = 0; x < +GRID_WIDTH +; x++) + +577 + `grid_coÜd_to_sü“n_coÜd +( +¡©e +, +x +, +y +, 0.0f, 0.0f, + +578 & +drx +, & +dry +); + +579 +de¡_»ù +. +x + = +¡©e +-> +ûÎ_sÿË_çùÜ + + +drx +; + +580 +de¡_»ù +. +y + = +¡©e +-> +ûÎ_sÿË_çùÜ + + +dry +; + +581 + `SDL_R’d”Textu» +( +¡©e +-> +»nd”” +, s�‹-> +¥r™es +, + +582 & +ûÎ_»ù +, & +de¡_»ù +); + +586  +x + = -1; x < +GRID_WIDTH +; x++) + +588 + `grid_coÜd_to_sü“n_coÜd +( +¡©e +, +x +, -1, 0.0f, 0.0f, & +drx +, & +dry +); + +589 +de¡_»ù +. +x + = +¡©e +-> +ûÎ_sÿË_çùÜ + + +drx +; + +590 +de¡_»ù +. +y + = +¡©e +-> +ûÎ_sÿË_çùÜ + + +dry +; + +591 + `SDL_R’d”Textu» +( +¡©e +-> +»nd”” +, s�‹-> +¥r™es +, & +ûÎ_»ù +, + +592 & +de¡_»ù +); + +596  +y + = 0; y < +GRID_WIDTH +; y++) + +598 + `grid_coÜd_to_sü“n_coÜd +( +¡©e +, -1, +y +, 0.0f, 0.0f, & +drx +, & +dry +); + +599 +de¡_»ù +. +x + = +¡©e +-> +ûÎ_sÿË_çùÜ + + +drx +; + +600 +de¡_»ù +. +y + = +¡©e +-> +ûÎ_sÿË_çùÜ + + +dry +; + +601 + `SDL_R’d”Textu» +( +¡©e +-> +»nd”” +, s�‹-> +¥r™es +, & +ûÎ_»ù +, + +602 & +de¡_»ù +); + +605 + `SDL_S‘R’d”D¿wBËndMode +( +¡©e +-> +»nd”” +, +SDL_BLENDMODE_NONE +); + +606 + `SDL_S‘R’d”D¿wCÞÜ +( +¡©e +-> +»nd”” +, 255, 255, 255, +SDL_ALPHA_OPAQUE +); + +608 + `SDL_S‘R’d”T¬g‘ +( +¡©e +-> +»nd”” +, +NULL +); + +609 + } +} + +612 + $d¿w_h–p_dŸlog +( +S�‹ +* +¡©e +) + +614 cÚ¡ ** +ph–p_‹xt + = +h–p_‹xt +; + +615  +sx + = +¡©e +-> +sü“n_width + / 2 - +HELP_DIALOG_WIDTH + / 2; + +616  +sy + = +¡©e +-> +sü“n_height + / 2 - +HELP_DIALOG_HEIGHT + / 2; + +617 +SDL_FReù + +dŸlog_»ù +; + +619 +dŸlog_»ù +. +x + = +sx +; + +620 +dŸlog_»ù +. +y + = +sy +; + +621 +dŸlog_»ù +. +w + = +HELP_DIALOG_WIDTH +; + +622 +dŸlog_»ù +. +h + = +HELP_DIALOG_HEIGHT +; + +624 + `SDL_S‘R’d”D¿wBËndMode +( +¡©e +-> +»nd”” +, +SDL_BLENDMODE_BLEND +); + +625 + `SDL_S‘R’d”D¿wCÞÜ +( +¡©e +-> +»nd”” +, 0, 0, 0, .75 * 255); + +626 + `SDL_R’d”FžlReù +( +¡©e +-> +»nd”” +, & +dŸlog_»ù +); + +628 + `SDL_S‘R’d”D¿wBËndMode +( +¡©e +-> +»nd”” +, +SDL_BLENDMODE_NONE +); + +629 + `SDL_S‘R’d”D¿wCÞÜ +( +¡©e +-> +»nd”” +, 255, 255, 255, +SDL_ALPHA_OPAQUE +); + +630 + `SDL_R’d”Reù +( +¡©e +-> +»nd”” +, & +dŸlog_»ù +); + +631 + `SDL_S‘R’d”D¿wCÞÜ +( +¡©e +-> +»nd”” +, 0, 0, 0, +SDL_ALPHA_OPAQUE +); + +632 +dŸlog_»ù +. +x +--; + +633 +dŸlog_»ù +. +y +--; + +634 +dŸlog_»ù +. +w + += 2; + +635 +dŸlog_»ù +. +h + += 2; + +636 + `SDL_R’d”Reù +( +¡©e +-> +»nd”” +, & +dŸlog_»ù +); + +637 +dŸlog_»ù +. +x +--; + +638 +dŸlog_»ù +. +y +--; + +639 +dŸlog_»ù +. +w + += 2; + +640 +dŸlog_»ù +. +h + += 2; + +641 + `SDL_R’d”Reù +( +¡©e +-> +»nd”” +, & +dŸlog_»ù +); + +643 * +ph–p_‹xt +) + +645 + `d¿w_‹xt +( +¡©e +, + +646 +sx + + +¡©e +-> +‹xt_sÿË_çùÜ + * (2 * +TER12_WIDTH +), + +647 +sy + + +648 + ( +ph–p_‹xt + - +h–p_‹xt + + 1) + +649 * +¡©e +-> +‹xt_sÿË_çùÜ + + +650 * ( +TER12_HEIGHT + + 2), + +651 +TER12_WIDTH +, +TER12_HEIGHT +, +¡©e +-> +‹r12_‹xtu» +, + +652 * +ph–p_‹xt +); + +653 +ph–p_‹xt +++; + +655 + } +} + +658 + $d¿w_‹xt +( +S�‹ +* +¡©e +, cÚ¡  +x +, cÚ¡  +y +, cÚ¡  +fÚt_width +, + +659 cÚ¡  +fÚt_height +, +SDL_Textu» +* +fÚt_‹x +, cÚ¡ * +‹xt +, ...) + +661  +buf +[ +PRINT_BUFSIZE +]; + +662 +va_li¡ + +¬gs +; + +663 cÚ¡ * +pbuf + = +NULL +; + +664  +x¡¬t + = 0; + +665  +y¡¬t + = 0; + +666 +SDL_FReù + +sourû_»ù +; + +667 +SDL_FReù + +de¡_»ù +; + +668  +šdex + = 0; + +669  +ch¬s_³r_row + = 0; + +670  +fœ¡_ch¬ + = ' '; + +671  +Ï¡_ch¬ + = '~'; + +672  +‹x_w +, +‹x_h +; + +674 + `as£¹ +(( +fÚt_‹x + !ð +NULL +è&& ( +‹xt + != NULL)); + +675 + `as£¹ +( +¡©e +-> +‹xt_sÿË_çùÜ + != 0.0f); + +676 + `as£¹ +( +fÚt_width + != -1); + +678 + `va_¡¬t +( +¬gs +, +‹xt +); + +679 + `v¢´štf +( +buf +, (buf), +‹xt +, +¬gs +); + +680 + `va_’d +( +¬gs +); + +682 +sourû_»ù +. +w + = +fÚt_width +; + +683 +sourû_»ù +. +h + = +fÚt_height +; + +685 +de¡_»ù +. +x + = x; + +686 +de¡_»ù +. +y + = y; + +687 +de¡_»ù +. +w + = +¡©e +-> +‹xt_sÿË_çùÜ + * +fÚt_width +; + +688 +de¡_»ù +. +h + = +¡©e +-> +‹xt_sÿË_çùÜ + * +fÚt_height +; + +690 ià(! + `SDL_G‘Textu»Size +( +fÚt_‹x +, & +‹x_w +, & +‹x_h +)) + +692 + `SDL_LogE¼Ü +( +SDL_LOG_CATEGORY_ERROR +, + +693 "SDL_G‘Textu»Siz�çžed: %s", + `SDL_G‘E¼Ü +()); + +694 + `do_ex™ +(1, +¡©e +); + +697 +ch¬s_³r_row + = +‹x_w + / ( +fÚt_width + + 1); + +699 +pbuf + = +buf +; + +701 * +pbuf +) + +703 ià(* +pbuf + >ð +fœ¡_ch¬ + && *pbuà<ð +Ï¡_ch¬ +) + +705 +šdex + = ()(* +pbuf + - +fœ¡_ch¬ +); + +707 +x¡¬t + = 1 + +šdex + % +ch¬s_³r_row + * ( +fÚt_width + + 1); + +708 +y¡¬t + = 1 + +šdex + / +ch¬s_³r_row + * ( +fÚt_height + + 1); + +713 +sourû_»ù +. +x + = +x¡¬t +; + +714 +sourû_»ù +. +y + = +y¡¬t +; + +716 + `SDL_R’d”Textu» +( +¡©e +-> +»nd”” +, +fÚt_‹x +, & +sourû_»ù +, + +717 & +de¡_»ù +); + +719 +de¡_»ù +. +x + +ð +¡©e +-> +‹xt_sÿË_çùÜ + * +fÚt_width +; + +721 +pbuf +++; + +724 + } +} + +727 + $fžl_Œ�Ët +( +S�‹ +* +¡©e +) + +729  +x +, +y +; + +730  +·ss +; + +731  +cÞÜ +; + +733 +·ss + = 0; + +734 +fžl_Œ�Ët_g’”©e +: + +735 +x + = + `¿ndom +(è% +GRID_WIDTH +; + +736 +y + = + `¿ndom +(è% +GRID_HEIGHT +; + +737 ià( +¡©e +-> +grid +[ + `INDEX +( +x +, +y +)]. +cÚ‹Ás + !ð +CELL_EMPTY +) + +738  +fžl_Œ�Ët_g’”©e +; + +740  + `¿ndom +() % 5) + +743 +cÞÜ + = +CELL_RED +; + +746 +cÞÜ + = +CELL_BLUE +; + +749 +cÞÜ + = +CELL_GREEN +; + +752 +cÞÜ + = +CELL_PURPLE +; + +755 +cÞÜ + = +CELL_ORANGE +; + +757 +¡©e +-> +grid +[ + `INDEX +( +x +, +y +)]. +cÚ‹Ás + = +cÞÜ +; + +758 +¡©e +-> +grid +[ + `INDEX +( +x +, +y +)]. +em±y + = 0; + +759 +·ss +++; + +760 + `SDL_LogDebug +( +SDL_LOG_CATEGORY_APPLICATION +, + +761 "fžl_Œ�Ët: % © (%d, %d)", +ûÎ_Çmes +[() +cÞÜ +], +x +, +y +); + +762 ià( +·ss + < 3) + +763  +fžl_Œ�Ët_g’”©e +; + +764 + } +} + +767 + $fšd_shÜ‹¡_·th +( +C–l +* +c +, C–l* +sourû +, cÚ¡  +di¡ +) + +769 ià(! +c + || c-> +·th_di¡ + <ð +di¡ +) + +772 ià(! +c +-> +em±y + && !c-> +¡¬tšg + && !c-> +’dšg +) + +775 ià( +c +-> +¡¬tšg +) + +776 +c +-> +·th_di¡ + = +di¡ +; + +778 ià( +c +-> +·th_di¡ + > +di¡ +) + +780 +c +-> +·th_di¡ + = +di¡ +; + +781 +c +-> +·th_sourû + = +sourû +; + +784 ià( +c +-> +’dšg +) + +787 + `fšd_shÜ‹¡_·th +( +c +-> +Ëá +, c, +di¡ + + 1); + +788 + `fšd_shÜ‹¡_·th +( +c +-> +up +, c, +di¡ + + 1); + +789 + `fšd_shÜ‹¡_·th +( +c +-> +right +, c, +di¡ + + 1); + +790 + `fšd_shÜ‹¡_·th +( +c +-> +down +, c, +di¡ + + 1); + +791 + } +} + +794 + $g‘_¥r™e_xy +(cÚ¡  +ûÎ +, * +x +, * +y +) + +796 + `as£¹ +(( +x + !ð +NULL +è&& ( +y + != NULL)); + +797  +ûÎ +) + +799  +CELL_RED +: + +800 * +x + = 1 * +CELL_SIZE +; + +801 * +y + = 0; + +803  +CELL_BLUE +: + +804 * +x + = 2 * +CELL_SIZE +; + +805 * +y + = 0; + +807  +CELL_GREEN +: + +808 * +x + = 3 * +CELL_SIZE +; + +809 * +y + = 0; + +811  +CELL_PURPLE +: + +812 * +x + = 4 * +CELL_SIZE +; + +813 * +y + = 0; + +815  +CELL_ORANGE +: + +816 * +x + = 5 * +CELL_SIZE +; + +817 * +y + = 0; + +819  +CELL_SELECTED +: + +820 * +x + = 0; + +821 * +y + = 1 * +CELL_SIZE +; + +824 * +x + = 0; + +825 * +y + = 0; + +829 + } +} + +832 + $grid_coÜd_to_sü“n_coÜd +(cÚ¡  +S�‹ +* +¡©e +, cÚ¡  +x +, cÚ¡  +y +, + +833 cÚ¡  +¡¬tx +, cÚ¡  +¡¬ty +, * +to_x +, * +to_y +) + +835 + `as£¹ +(( +¡©e + !ð +NULL +è&& ( +to_x + !ðNULLè&& ( +to_y + != NULL)); + +836 * +to_x + = +¡¬tx + + +x + * +¡©e +-> +ûÎ_sÿË_çùÜ + * +CELL_SIZE +; + +837 * +to_y + = +¡¬ty + + +y + * +¡©e +-> +ûÎ_sÿË_çùÜ + * +CELL_SIZE +; + +838 + } +} + +841 + $grid_coÜd_to_sü“n_coÜdF +(cÚ¡  +S�‹ +* +¡©e +, cÚ¡  +x +, + +842 cÚ¡  +y +, cÚ¡  +¡¬tx +, cÚ¡  +¡¬ty +, * +to_x +, + +843 * +to_y +) + +845 + `as£¹ +(( +¡©e + !ð +NULL +è&& ( +to_x + !ðNULLè&& ( +to_y + != NULL)); + +846 * +to_x + = +¡¬tx + + +x + * +¡©e +-> +ûÎ_sÿË_çùÜ + * +CELL_SIZE +; + +847 * +to_y + = +¡¬ty + + +y + * +¡©e +-> +ûÎ_sÿË_çùÜ + * +CELL_SIZE +; + +848 + } +} + +850 * + gûÎ_image +[] = {"[ ]", "[R]", "[B]", "[G]", "[P]", "[O]", "[/]", + +853  + #CELL_START + 7 + + ) + +854  + #CELL_END + 8 + + ) + +855  + #CELL_PATH + 9 + + ) + +858 + $hªdË_þick +( +S�‹ +* +¡©e +) + +860  +¡¬tx +, +¡¬ty +; + +862 + `as£¹ +( +¡©e + !ð +NULL +); + +863 ià( +¡©e +-> +mode + =ð +STATE_IDLE +) + +865 + `ÿlcuÏ‹_grid_Üigš +( +¡©e +, & +¡¬tx +, & +¡¬ty +); + +866 + `sü“n_coÜd_to_grid_coÜd +( +¡©e +, s�‹-> +poš‹r +. +x +, + +867 +¡©e +-> +poš‹r +. +y +, +¡¬tx +, +¡¬ty +, + +868 & +¡©e +-> +£ËùiÚ_¡¬t +. +x +, &¡©e->£ËùiÚ_¡¬t. +y +); + +869 +¡©e +-> +ªim©iÚ +. +¡¬t +. +x + = ()¡©e-> +£ËùiÚ_¡¬t +.x; + +870 +¡©e +-> +ªim©iÚ +. +¡¬t +. +y + = ()¡©e-> +£ËùiÚ_¡¬t +.y; + +871 +¡©e +-> +ªim©iÚ +. +pos™iÚ +. +x + = s�‹->ªim©iÚ. +¡¬t +.x; + +872 +¡©e +-> +ªim©iÚ +. +pos™iÚ +. +y + = s�‹->ªim©iÚ. +¡¬t +.y; + +873 +¡©e +-> +·th_¡¬t + + +874 ð& +¡©e +-> +grid +[ + `INDEXFI +(¡©e-> +ªim©iÚ +. +¡¬t +. +x +, + +875 +¡©e +-> +ªim©iÚ +. +¡¬t +. +y +)]; + +876 + `SDL_LogDebug +( +SDL_LOG_CATEGORY_APPLICATION +, + +878 +¡©e +-> +·th_¡¬t +-> +coÜds +. +x +, + +879 +¡©e +-> +·th_¡¬t +-> +coÜds +. +y +, + +880 +¡©e +-> +·th_¡¬t +-> +em±y + ? "TRUE" : "FALSE"); + +881 ià( +¡©e +-> +·th_¡¬t +-> +em±y +) + +883 +¡©e +-> +·th_¡¬t + = +NULL +; + +884 +¡©e +-> +£ËùiÚ_¡¬t +. +x + = -1; + +885 +¡©e +-> +£ËùiÚ_¡¬t +. +y + = -1; + +889 +¡©e +-> +mode + = +STATE_SELECTION +; + +890 +¡©e +-> +·th_¡¬t +-> +¡¬tšg + = 1; + +891 + `SDL_LogDebug +( +SDL_LOG_CATEGORY_APPLICATION +, + +895 +¡¬tx +, +¡¬ty +, +¡©e +-> +poš‹r +. +x +, s�‹->poš‹r. +y +, + +896 +¡©e +-> +£ËùiÚ_¡¬t +. +x +, s�‹->£ËùiÚ_¡¬t. +y +); + +897 +¡©e +-> +»d¿w + = 1; + +899 ià( +¡©e +-> +mode + =ð +STATE_SELECTION +) + +901 +¡©e +-> +mode + = +STATE_MOVING +; + +902 + `ÿlcuÏ‹_grid_Üigš +( +¡©e +, & +¡¬tx +, & +¡¬ty +); + +903 + `sü“n_coÜd_to_grid_coÜd +( +¡©e +, s�‹-> +poš‹r +. +x +, + +904 +¡©e +-> +poš‹r +. +y +, +¡¬tx +, +¡¬ty +, + +905 & +¡©e +-> +£ËùiÚ_’d +. +x +, &¡©e->£ËùiÚ_’d. +y +); + +906 +¡©e +-> +·th_’d + = &¡©e-> +grid +[ + `INDEXFI +(¡©e-> +£ËùiÚ_’d +. +x +, + +907 +¡©e +-> +£ËùiÚ_’d +. +y +)]; + +909 ià(! +¡©e +-> +·th_’d +-> +em±y +) + +910  +hªdË_þick_»£t +; + +912 + `SDL_LogDebug +( +SDL_LOG_CATEGORY_APPLICATION +, + +916 +¡¬tx +, +¡¬ty +, +¡©e +-> +poš‹r +. +x +, s�‹->poš‹r. +y +, + +917 +¡©e +-> +£ËùiÚ_’d +. +x +, s�‹->£ËùiÚ_’d. +y +); + +919 + `SDL_LogDebug +( +SDL_LOG_CATEGORY_APPLICATION +, + +921 +¡©e +-> +·th_¡¬t +-> +coÜds +. +x +, + +922 +¡©e +-> +·th_¡¬t +-> +coÜds +. +y +, s�‹-> +·th_’d +->coÜds. +x +, + +923 +¡©e +-> +·th_’d +-> +coÜds +. +y +); + +924 +¡©e +-> +·th_’d +-> +’dšg + = 1; + +926 + `fšd_shÜ‹¡_·th +( +¡©e +-> +·th_¡¬t +, +NULL +, 0); + +927 + `m¬k_·th +( +¡©e +-> +·th_’d +); + +928 + `´štf +("M =\n"); + +929 + `´št_m©rix +( +¡©e +-> +grid +); + +932 ià(! +¡©e +-> +·th_¡¬t +-> +·th_Ãxt +) + +933  +hªdË_þick_»£t +; + +935 +¡©e +-> +ªim©iÚ +. +’d +. +x + = s�‹-> +·th_¡¬t +-> +·th_Ãxt +-> +coÜds +.x; + +936 +¡©e +-> +ªim©iÚ +. +’d +. +y + = s�‹-> +·th_¡¬t +-> +·th_Ãxt +-> +coÜds +.y; + +937 + `SDL_LogDebug +( +SDL_LOG_CATEGORY_APPLICATION +, + +939 +¡©e +-> +ªim©iÚ +. +¡¬t +. +x +, s�‹->ªim©iÚ.¡¬t. +y +, + +940 +¡©e +-> +ªim©iÚ +. +’d +. +x +, s�‹->ªim©iÚ.’d. +y +); + +941 +¡©e +-> +£ËùiÚ_¡¬t +. +x + = -1; + +942 +¡©e +-> +£ËùiÚ_¡¬t +. +y + = -1; + +943 + `ÿlcuÏ‹_d–� +( +¡©e +); + +944 +¡©e +-> +ªim©iÚ +. +¡• + = 1; + +945 +¡©e +-> +ªim©iÚ +. +fš®_¡• + = +ANIM_STEPS +; + +946 +¡©e +-> +ªim©iÚ +. +aùive + = 1; + +947 +¡©e +-> +»d¿w + = 1; + +948 + `´št_·th +(& +¡©e +-> +grid +[ + `INDEXFI +(¡©e-> +ªim©iÚ +. +¡¬t +. +x +, + +949 +¡©e +-> +ªim©iÚ +. +¡¬t +. +y +)]); + +953 +hªdË_þick_»£t +: + +954 + `SDL_LogDebug +( +SDL_LOG_CATEGORY_APPLICATION +, "handle_click: Reset"); + +955 +¡©e +-> +£ËùiÚ_¡¬t +. +x + = -1; + +956 +¡©e +-> +£ËùiÚ_¡¬t +. +y + = -1; + +957 +¡©e +-> +·th_¡¬t +-> +¡¬tšg + = 0; + +958 +¡©e +-> +·th_¡¬t + = +NULL +; + +959 +¡©e +-> +·th_’d +-> +’dšg + = 0; + +960 +¡©e +-> +·th_’d + = +NULL +; + +961 +¡©e +-> +mode + = +STATE_IDLE +; + +962 +¡©e +-> +»d¿w + = 1; + +963 + } +} + +966 + $hªdË_ev’t +( +S�‹ +* +¡©e +, +SDL_Ev’t +* +ev’t +) + +973  +ev’t +-> +ty³ +) + +975  +SDL_EVENT_QUIT +: + +976 +¡©e +-> +rušg + = 0; + +978  +SDL_EVENT_WINDOW_RESIZED +: + +979 +¡©e +-> +»d¿w + = 1; + +980 + `ÿlcuÏ‹_di¥Ïy_size +( +¡©e +); + +982  +SDL_EVENT_KEY_DOWN +: + +983 + `SDL_LogDebug +( +SDL_LOG_CATEGORY_APPLICATION +, + +984 "GÙ Keydown, key = %X, mod = %X", +ev’t +-> +key +.key, + +985 +ev’t +-> +key +. +mod +); + +987  +ev’t +-> +key +.key) + +989  +SDLK_F1 +: + +990 +¡©e +-> +h–p_shown + = 1; + +991 +¡©e +-> +»d¿w + = 1; + +993  +SDLK_RETURN +: + +994 ià(!( +ev’t +-> +key +. +mod + & +SDL_KMOD_ALT +)) + +996 +¡©e +-> +fuÎ_sü“n + = !state->full_screen; + +997 + `SDL_LogDebug +( +SDL_LOG_CATEGORY_APPLICATION +, + +999 +¡©e +-> +fuÎ_sü“n + ? "ON" : "OFF"); + +1000 + `SDL_S‘WšdowFuÎsü“n +( +¡©e +-> +wšdow +, + +1001 +¡©e +-> +fuÎ_sü“n +); + +1003  +SDLK_ESCAPE +: + +1004 +¡©e +-> +h–p_shown + = 0; + +1005 +¡©e +-> +»d¿w + = 1; + +1007  +SDLK_Q +: + +1008 ià( +ev’t +-> +key +. +mod + & +SDL_KMOD_CTRL +) + +1009 +¡©e +-> +rušg + = 0; + +1012 + `SDL_LogDebug +( +SDL_LOG_CATEGORY_APPLICATION +, + +1016  +SDL_EVENT_MOUSE_BUTTON_UP +: + +1017 + `hªdË_þick +( +¡©e +); + +1019  +SDL_EVENT_MOUSE_MOTION +: + +1020 +¡©e +-> +poš‹r +. +x + = +ev’t +-> +mÙiÚ +.x; + +1021 +¡©e +-> +poš‹r +. +y + = +ev’t +-> +mÙiÚ +.y; + +1022 +¡©e +-> +»d¿w + = 1; + +1025 + } +} + +1028 + $š™_ªim©iÚ +( +Anim©iÚS�‹ +* +ªim©iÚ +) + +1030 + `as£¹ +( +ªim©iÚ + !ð +NULL +); + +1031 +ªim©iÚ +-> +¡¬t +. +x + = -1; + +1032 +ªim©iÚ +-> +¡¬t +. +y + = -1; + +1033 +ªim©iÚ +-> +pos™iÚ +. +x + = -1; + +1034 +ªim©iÚ +-> +pos™iÚ +. +y + = -1; + +1035 +ªim©iÚ +-> +’d +. +x + = -1; + +1036 +ªim©iÚ +-> +’d +. +y + = -1; + +1037 +ªim©iÚ +-> +d–� +. +x + = 0; + +1038 +ªim©iÚ +-> +d–� +. +y + = 0; + +1039 +ªim©iÚ +-> +aùive + = 0; + +1040 +ªim©iÚ +-> +¡• + = 0; + +1041 +ªim©iÚ +-> +fš®_¡• + = 0; + +1042 + } +} + +1045 + $š™_ûÎ +( +C–l +* +c +, cÚ¡ +SDL_FPošt +* +coÜds +) + +1047 + `as£¹ +(( +c + !ð +NULL +è&& ( +coÜds + != NULL)); + +1048 +c +-> +em±y + = 1; + +1049 +c +-> +¡¬tšg + = 0; + +1050 +c +-> +’dšg + = 0; + +1051 +c +-> +·th + = 0; + +1052 +c +-> +coÜds +. +x + = coords->x; + +1053 +c +-> +coÜds +. +y + = coords->y; + +1054 +c +-> +cÚ‹Ás + = +CELL_EMPTY +; + +1055 +c +-> +Ëá + = c-> +up + = c-> +right + = c-> +down + = +NULL +; + +1056 +c +-> +·th_sourû + = +NULL +; + +1057 +c +-> +·th_di¡ + = +INT_MAX +; + +1058 + } +} + +1061 + $š™_¡©e +( +S�‹ +* +¡©e +) + +1063 + `as£¹ +( +¡©e + !ð +NULL +); + +1064 + `š™_ªim©iÚ +(& +¡©e +-> +ªim©iÚ +); + +1065 +¡©e +-> +grid + = +NULL +; + +1066 +¡©e +-> +loÿtiÚ_poš‹r + = 0; + +1067 +¡©e +-> +loÿtiÚ_¡ack + = +NULL +; + +1068 +¡©e +-> +ûÎ_sÿË_çùÜ + = 2.0f; + +1069 +¡©e +-> +di¥Ïy_width + = +DEFAULT_WIDTH +; + +1070 +¡©e +-> +di¥Ïy_height + = +DEFAULT_HEIGHT +; + +1071 +¡©e +-> +fuÎ_sü“n + = 1; + +1072 +¡©e +-> +h–p_shown + = 0; + +1073 +¡©e +-> +·th_¡¬t + = +NULL +; + +1074 +¡©e +-> +·th_’d + = +NULL +; + +1075 +¡©e +-> +»d¿w + = 1; + +1076 +¡©e +-> +»nd”” + = +NULL +; + +1077 +¡©e +-> +rušg + = 1; + +1078 +¡©e +-> +sü“n_width + = +DEFAULT_WIDTH +; + +1079 +¡©e +-> +sü“n_height + = +DEFAULT_HEIGHT +; + +1080 +¡©e +-> +scÜe + = 0; + +1081 +¡©e +-> +¥r™es + = +NULL +; + +1082 +¡©e +-> +mode + = +STATE_IDLE +; + +1083 +¡©e +-> +‹r12_‹xtu» + = +NULL +; + +1084 +¡©e +-> +background + = +NULL +; + +1085 +¡©e +-> +wšdow + = +NULL +; + +1086 +¡©e +-> +‹xt_sÿË_çùÜ + = 2.0f; + +1087 + } +} + +1090 + $lßd_‹xtu»s +( +S�‹ +* +¡©e +) + +1092 +SDL_Surçû +* +surçû + = +NULL +; + +1093 +SDL_SÿËMode + +sÿË_mode + = +SDL_SCALEMODE_PIXELART +; + +1095 + `as£¹ +( +¡©e + !ð +NULL +); + +1097 +surçû + = + `Œy_lßd +( +SPRITES_PNG +); + +1098 ià(! +surçû +) + +1100 +¡©e +-> +¥r™es + = + `SDL_C»©eTextu»FromSurçû +(¡©e-> +»nd”” +, +surçû +); + +1101 ià(! +¡©e +-> +¥r™es +) + +1103 + `SDL_LogE¼Ü +( +SDL_LOG_CATEGORY_ERROR +, + +1105 + `SDL_G‘E¼Ü +()); + +1106 + `do_ex™ +(1, +¡©e +); + +1108 + `SDL_S‘Textu»SÿËMode +( +¡©e +-> +¥r™es +, +sÿË_mode +); + +1109 + `SDL_De¡roySurçû +( +surçû +); + +1111 +surçû + = + `Œy_lßd +( +TER12_PNG +); + +1112 ià(! +surçû +) + +1114 +¡©e +-> +‹r12_‹xtu» + + +1115 ð + `SDL_C»©eTextu»FromSurçû +( +¡©e +-> +»nd”” +, +surçû +); + +1116 ià(! +¡©e +-> +‹r12_‹xtu» +) + +1118 + `SDL_LogE¼Ü +( +SDL_LOG_CATEGORY_ERROR +, + +1120 + `SDL_G‘E¼Ü +()); + +1121 + `do_ex™ +(1, +¡©e +); + +1123 + `SDL_S‘Textu»SÿËMode +( +¡©e +-> +‹r12_‹xtu» +, +sÿË_mode +); + +1124 + `SDL_De¡roySurçû +( +surçû +); + +1127 + } +} + +1130 + $loÿtiÚ_pÝ +( +S�‹ +* +¡©e +, +SDL_Pošt +* +loÿtiÚ +) + +1132 + `as£¹ +(( +¡©e + !ð +NULL +è&& ( +loÿtiÚ + != NULL)); + +1133 ià( +¡©e +-> +loÿtiÚ_poš‹r + == 0) + +1135 +¡©e +-> +loÿtiÚ_poš‹r +--; + +1136 +loÿtiÚ +-> +x + = +¡©e +-> +loÿtiÚ_¡ack +[¡©e-> +loÿtiÚ_poš‹r +].x; + +1137 +loÿtiÚ +-> +y + = +¡©e +-> +loÿtiÚ_¡ack +[¡©e-> +loÿtiÚ_poš‹r +].y; + +1139 + } +} + +1142 + $loÿtiÚ_push +( +S�‹ +* +¡©e +, cÚ¡ +SDL_Pošt +* +loÿtiÚ +) + +1144 + `as£¹ +( +loÿtiÚ + !ð +NULL +); + +1145 +¡©e +-> +loÿtiÚ_¡ack +[¡©e-> +loÿtiÚ_poš‹r +]. +x + = +loÿtiÚ +->x; + +1146 +¡©e +-> +loÿtiÚ_¡ack +[¡©e-> +loÿtiÚ_poš‹r +]. +y + = +loÿtiÚ +->y; + +1147 +¡©e +-> +loÿtiÚ_poš‹r +++; + +1148 + } +} + +1151 + $m¬k_·th +( +C–l +* +c +) + +1153 ià(! +c +) + +1156 +c +-> +·th + = 1; + +1157 ià( +c +-> +·th_sourû +) + +1159 +c +-> +·th_sourû +-> +·th_Ãxt + = c; + +1160 + `SDL_LogDebug +( +SDL_LOG_CATEGORY_APPLICATION +, + +1162 +c +-> +·th_sourû +-> +coÜds +. +x +, c->·th_sourû->coÜds. +y +, + +1163 +c +-> +·th_sourû +-> +·th_Ãxt +-> +coÜds +. +x +, + +1164 +c +-> +·th_sourû +-> +·th_Ãxt +-> +coÜds +. +y +); + +1166 + `m¬k_·th +( +c +-> +·th_sourû +); + +1167 + } +} + +1170 + $Ãxt_¡• +( +S�‹ +* +¡©e +) + +1172 + `as£¹ +( +¡©e + !ð +NULL +); + +1173 +¡©e +-> +»d¿w + = 1; + +1174 + } +} + +1177 + $·s§bË +(cÚ¡  +S�‹ +* +¡©e +, cÚ¡  +x +, cÚ¡  +y +) + +1179 + `as£¹ +( +¡©e + !ð +NULL +); + +1180  +x + >ð0 && x < +GRID_WIDTH + && +y + >ð0 && y < +GRID_HEIGHT + + +1181 && +¡©e +-> +grid +[ + `INDEX +( +x +, +y +)]. +cÚ‹Ás + =ð +CELL_EMPTY +; + +1182 + } +} + +1185 + $´št_m©rix +(cÚ¡  +C–l +* +M +) + +1187 cÚ¡  +C–l +* +c + = +NULL +; + +1188  +x +, +y +; + +1190  +y + = 0; y < +GRID_HEIGHT +; y++) + +1192  +x + = 0; x < +GRID_WIDTH +; x++) + +1194 +c + = & +M +[ + `INDEX +( +x +, +y +)]; + +1195 ià( +c +-> +¡¬tšg +) + +1196 + `´štf +("%s", +ûÎ_image +[ +CELL_START +]); + +1197 ià( +c +-> +’dšg +) + +1198 + `´štf +("%s", +ûÎ_image +[ +CELL_END +]); + +1199 ià( +c +-> +·th +) + +1200 + `´štf +("%s", +ûÎ_image +[ +CELL_PATH +]); + +1201 ià(! +c +-> +em±y +) + +1202 + `´štf +("%s", +ûÎ_image +[ +c +-> +cÚ‹Ás +]); + +1204 + `´štf +("%s", +ûÎ_image +[ +CELL_EMPTY +]); + +1206 + `´štf +("\n"); + +1209 + } +} + +1212 + $´št_·th +( +C–l +* +c +) + +1214 + `´štf +("(%0.0f, %0.0f)", +c +-> +coÜds +. +x +, c->coÜds. +y +); + +1215 ià( +c +-> +·th_Ãxt +) + +1217 + `´štf +(" -> "); + +1218 + `´št_·th +( +c +-> +·th_Ãxt +); + +1221 + `´štf +("\n"); + +1222 + } +} + +1225 + $»£t +( +S�‹ +* +¡©e +) + +1227  +y + = 0; y < +GRID_HEIGHT +; y++) + +1228  +x + = 0; x < +GRID_WIDTH +; x++) + +1229 +¡©e +-> +grid +[ + `INDEX +( +x +, +y +)]. +cÚ‹Ás + = +CELL_EMPTY +; + +1230 +¡©e +-> +mode + = +STATE_IDLE +; + +1231 +¡©e +-> +£ËùiÚ_¡¬t +. +x + = -1; + +1232 +¡©e +-> +£ËùiÚ_¡¬t +. +y + = -1; + +1233 +¡©e +-> +£ËùiÚ_’d +. +x + = -1; + +1234 +¡©e +-> +£ËùiÚ_’d +. +y + = -1; + +1235 +¡©e +-> +loÿtiÚ_poš‹r + = 0; + +1236 +¡©e +-> +ªim©iÚ +. +aùive + = 0; + +1237 +¡©e +-> +»d¿w + = 1; + +1238 + } +} + +1241 + $»£t_·th +( +C–l +* +grid +) + +1243  +C–l +* +c + = +NULL +; + +1244  +x +, +y +; + +1246 + `as£¹ +( +grid + !ð +NULL +); + +1248  +y + = 0; y < +GRID_HEIGHT +; y++) + +1249  +x + = 0; x < +GRID_WIDTH +; x++) + +1251 +c + = & +grid +[ + `INDEX +( +x +, +y +)]; + +1252 +c +-> +·th_sourû + = +NULL +; + +1253 +c +-> +·th_Ãxt + = +NULL +; + +1254 +c +-> +·th_di¡ + = +INT_MAX +; + +1255 +c +-> +¡¬tšg + = 0; + +1256 +c +-> +’dšg + = 0; + +1257 +c +-> +·th + = 0; + +1259 + } +} + +1262 + $sü“n_coÜd_to_grid_coÜd +( +S�‹ +* +¡©e +, cÚ¡  +x +, cÚ¡  +y +, + +1263 cÚ¡  +¡¬tx +, cÚ¡  +¡¬ty +, * +to_x +, * +to_y +) + +1265  +_çùÜ_x +, +_çùÜ_y +; + +1266  +_¡¬tx +, +_¡¬ty +; + +1268 + `as£¹ +( +¡©e + !ð +NULL +); + +1269 + `as£¹ +(( +to_x + !ð +NULL +è&& ( +to_y + != NULL) + +1270 && ( +¡©e +-> +ûÎ_sÿË_çùÜ + != 0.0f)); + +1271 +_çùÜ_x + = () +¡©e +-> +di¥Ïy_width + / s�‹-> +sü“n_width +; + +1272 +_çùÜ_y + = () +¡©e +-> +di¥Ïy_height + / s�‹-> +sü“n_height +; + +1273 +_¡¬tx + = +¡¬tx + * +_çùÜ_x +; + +1274 +_¡¬ty + = +¡¬ty + * +_çùÜ_y +; + +1277 * +to_x + = +x + >ð +_¡¬tx + + +1278 ? ( +x + < +_¡¬tx + + +_çùÜ_x + * +¡©e +-> +ûÎ_sÿË_çùÜ + + +1279 * +CELL_SIZE + * +GRID_WIDTH + + +1280 ? ( +x + - +_¡¬tx +è/ ( +_çùÜ_x + * +¡©e +-> +ûÎ_sÿË_çùÜ + + +1281 * +CELL_SIZE +) + +1282 : +GRID_WIDTH + - 1) + +1284 * +to_y + = +y + >ð +_¡¬ty + + +1285 ? ( +y + < +_¡¬ty + + +_çùÜ_y + * +¡©e +-> +ûÎ_sÿË_çùÜ + + +1286 * +CELL_SIZE + * +GRID_HEIGHT + + +1287 ? ( +y + - +_¡¬ty +è/ ( +_çùÜ_y + * +¡©e +-> +ûÎ_sÿË_çùÜ + + +1288 * +CELL_SIZE +) + +1289 : +GRID_HEIGHT + - 1) + +1292 + } +} + +1295 + $sü“n_coÜd_to_grid_coÜdF +( +S�‹ +* +¡©e +, cÚ¡  +x +, cÚ¡  +y +, + +1296 cÚ¡  +¡¬tx +, cÚ¡  +¡¬ty +, * +to_x +, * +to_y +) + +1298  +_çùÜ_x +, +_çùÜ_y +; + +1299  +_¡¬tx +, +_¡¬ty +; + +1301 + `as£¹ +( +¡©e + !ð +NULL +); + +1302 + `as£¹ +(( +to_x + !ð +NULL +è&& ( +to_y + != NULL) + +1303 && ( +¡©e +-> +ûÎ_sÿË_çùÜ + != 0.0f)); + +1304 +_çùÜ_x + = () +¡©e +-> +di¥Ïy_width + / s�‹-> +sü“n_width +; + +1305 +_çùÜ_y + = () +¡©e +-> +di¥Ïy_height + / s�‹-> +sü“n_height +; + +1306 +_¡¬tx + = +¡¬tx + * +_çùÜ_x +; + +1307 +_¡¬ty + = +¡¬ty + * +_çùÜ_y +; + +1310 * +to_x + = +x + >ð +_¡¬tx + + +1311 ? ( +x + < +_¡¬tx + + +_çùÜ_x + * +¡©e +-> +ûÎ_sÿË_çùÜ + + +1312 * +CELL_SIZE + * +GRID_WIDTH + + +1313 ? ( +x + - +_¡¬tx +è/ ( +_çùÜ_x + * +¡©e +-> +ûÎ_sÿË_çùÜ + + +1314 * +CELL_SIZE +) + +1315 : +GRID_WIDTH + - 1) + +1317 * +to_y + = +y + >ð +_¡¬ty + + +1318 ? ( +y + < +_¡¬ty + + +_çùÜ_y + * +¡©e +-> +ûÎ_sÿË_çùÜ + + +1319 * +CELL_SIZE + * +GRID_HEIGHT + + +1320 ? ( +y + - +_¡¬ty +è/ ( +_çùÜ_y + * +¡©e +-> +ûÎ_sÿË_çùÜ + + +1321 * +CELL_SIZE +) + +1322 : +GRID_HEIGHT + - 1) + +1325 + } +} + +1328 + $¡•_ªim©iÚ +( +S�‹ +* +¡©e +) + +1330  +C–l +* +äom + = +NULL +; + +1331  +C–l +* +to + = +NULL +; + +1332  +isx +, +isy +, +›x +, +›y +; + +1334 ià( +¡©e +-> +ªim©iÚ +. +¡• + =ð¡©e->ªim©iÚ. +fš®_¡• +) + +1336 +isx + = () + `round +( +¡©e +-> +ªim©iÚ +. +¡¬t +. +x +); + +1337 +isy + = () + `round +( +¡©e +-> +ªim©iÚ +. +¡¬t +. +y +); + +1338 +›x + = () + `round +( +¡©e +-> +ªim©iÚ +. +’d +. +x +); + +1339 +›y + = () + `round +( +¡©e +-> +ªim©iÚ +. +’d +. +y +); + +1340 +äom + = & +¡©e +-> +grid +[ + `INDEX +( +isx +, +isy +)]; + +1341 +to + = & +¡©e +-> +grid +[ + `INDEX +( +›x +, +›y +)]; + +1343 ià( +to +-> +’dšg +) + +1345 +¡©e +-> +ªim©iÚ +. +aùive + = 0; + +1346 + `SDL_LogDebug +( +SDL_LOG_CATEGORY_APPLICATION +, + +1348 +¡©e +-> +ªim©iÚ +. +’d +. +x +, s�‹->ªim©iÚ.’d. +y +); + +1350 ià( +to +-> +·th_Ãxt +) + +1352 +¡©e +-> +ªim©iÚ +. +¡¬t +. +x + = s�‹->ªim©iÚ. +’d +.x; + +1353 +¡©e +-> +ªim©iÚ +. +¡¬t +. +y + = s�‹->ªim©iÚ. +’d +.y; + +1354 +¡©e +-> +ªim©iÚ +. +pos™iÚ +. +x + = s�‹->ªim©iÚ. +¡¬t +.x; + +1355 +¡©e +-> +ªim©iÚ +. +pos™iÚ +. +y + = s�‹->ªim©iÚ. +¡¬t +.y; + +1356 +¡©e +-> +ªim©iÚ +. +’d +. +x + = +to +-> +·th_Ãxt +-> +coÜds +.x; + +1357 +¡©e +-> +ªim©iÚ +. +’d +. +y + = +to +-> +·th_Ãxt +-> +coÜds +.y; + +1358 + `SDL_LogDebug +( +SDL_LOG_CATEGORY_APPLICATION +, + +1360 +¡©e +-> +ªim©iÚ +. +’d +. +x +, s�‹->ªim©iÚ.’d. +y +); + +1361 + `SDL_LogDebug +( +SDL_LOG_CATEGORY_APPLICATION +, + +1363 +¡©e +-> +ªim©iÚ +. +¡¬t +. +x +, + +1364 +¡©e +-> +ªim©iÚ +. +¡¬t +. +y +, + +1365 +¡©e +-> +ªim©iÚ +. +’d +. +x +, s�‹->ªim©iÚ.’d. +y +); + +1366 + `ÿlcuÏ‹_d–� +( +¡©e +); + +1367 +¡©e +-> +ªim©iÚ +. +¡• + = 1; + +1371 + `SDL_LogDebug +( +SDL_LOG_CATEGORY_APPLICATION +, + +1373 +¡©e +-> +ªim©iÚ +. +’d +. +x +, s�‹->ªim©iÚ.’d. +y +); + +1374 +¡©e +-> +ªim©iÚ +. +aùive + = 0; + +1377 + `SDL_LogDebug +( +SDL_LOG_CATEGORY_APPLICATION +, + +1378 "grid[%d][%d] = %d <-> grid[%d][%d] = %d", +›y +, +›x +, + +1379 +to +-> +cÚ‹Ás +, +isy +, +isx +, +äom +->contents); + +1380 +to +-> +cÚ‹Ás + = +äom +->contents; + +1381 +äom +-> +cÚ‹Ás + = +CELL_EMPTY +; + +1382 +to +-> +em±y + = 0; + +1383 +äom +-> +em±y + = 1; + +1385 ià( +to +-> +’dšg +) + +1387 + `»£t_·th +( +¡©e +-> +grid +); + +1388 +¡©e +-> +·th_¡¬t + = +NULL +; + +1389 +¡©e +-> +·th_’d + = +NULL +; + +1391 + `check_five +( +¡©e +, +to +); + +1396 +¡©e +-> +ªim©iÚ +. +pos™iÚ +. +x + +ð¡©e->ªim©iÚ. +d–� +.x; + +1397 +¡©e +-> +ªim©iÚ +. +pos™iÚ +. +y + +ð¡©e->ªim©iÚ. +d–� +.y; + +1398 +¡©e +-> +ªim©iÚ +. +¡• +++; + +1399 + `SDL_LogDebug +( +SDL_LOG_CATEGORY_APPLICATION +, + +1401 +¡©e +-> +ªim©iÚ +. +pos™iÚ +. +x +, s�‹->ªim©iÚ.pos™iÚ. +y +, + +1402 +¡©e +-> +ªim©iÚ +. +’d +. +x +, s�‹->ªim©iÚ.’d. +y +, + +1403 +¡©e +-> +ªim©iÚ +. +¡• +, s�‹->ªim©iÚ. +fš®_¡• +, + +1404 +¡©e +-> +ªim©iÚ +. +aùive + ? "ACTIVE" : "INACTIVE"); + +1405 + } +} + +1407 +SDL_Surçû +* + +1408 + $Œy_lßd +(cÚ¡ * +fž’ame +) + +1410 +SDL_Surçû +* +surçû + = +NULL +; + +1411  +‹x_·thÇme +[ +BUFSIZE +]; + +1413 + `as£¹ +( +fž’ame + !ð +NULL +); + +1414 + `¢´štf +( +‹x_·thÇme +, +BUFSIZE +, "%s/%s", +DATADIR +, +fž’ame +); + +1415 +surçû + = + `IMG_Lßd +( +‹x_·thÇme +); + +1416 ià(! +surçû +) + +1418 + `SDL_LogE¼Ü +( +SDL_LOG_CATEGORY_ERROR +, + +1419 "Œy_lßd: IMG_Lßd fažed: %s", + `SDL_G‘E¼Ü +()); + +1420 + `¢´štf +( +‹x_·thÇme +, +BUFSIZE +, "./%s", +fž’ame +); + +1421 + `SDL_LogDebug +( +SDL_LOG_CATEGORY_APPLICATION +, + +1422 "Œy_lßd:�ryšg %s", +‹x_·thÇme +); + +1423 +surçû + = + `IMG_Lßd +( +‹x_·thÇme +); + +1424 ià(! +surçû +) + +1426 + `SDL_LogE¼Ü +( +SDL_LOG_CATEGORY_ERROR +, + +1428 + `SDL_G‘E¼Ü +()); + +1429 + `ex™ +(1); + +1431 + `SDL_LogDebug +( +SDL_LOG_CATEGORY_APPLICATION +, + +1432 "Œy_lßd: sucûs (%s)", +‹x_·thÇme +); + +1435  +surçû +; + +1436 + } +} + +1439 + $maš +( +¬gc +, ** +¬gv +) + +1441 +SDL_Ev’t + +ev’t +; + +1442  +C–l +* +c + = +NULL +; + +1443  +S�‹ + +¡©e +; + +1444  +time¥ec + +now +; + +1445 +SDL_FPošt + +coÜds +; + +1446  +px +, +py +; + +1447 +þockid_t + +cid +; + +1448  +Ï¡_time +, +cu¼’t_time +; + +1449  +x +, +y +; + +1453 + `š™_¡©e +(& +¡©e +); + +1455 ià(! + `SDL_In™ +( +SDL_INIT_VIDEO +)) + +1457 + `SDL_LogE¼Ü +( +SDL_LOG_CATEGORY_ERROR +, "SDL_Init failed: %s", + +1458 + `SDL_G‘E¼Ü +()); + +1459 + `ex™ +(1); + +1462 + `SDL_S‘LogPriÜ™›s +( +SDL_LOG_PRIORITY_DEBUG +); + +1463 ià(! + `SDL_C»©eWšdowAndR’d”” +( +WIN_TITLE +, +DEFAULT_WIDTH +, + +1464 +DEFAULT_HEIGHT +, + +1465 +SDL_WINDOW_FULLSCREEN + | +SDL_WINDOW_BORDERLESS +, + +1466 & +¡©e +. +wšdow +, &¡©e. +»nd”” +)) + +1468 + `SDL_LogE¼Ü +( +SDL_LOG_CATEGORY_ERROR +, + +1470 + `SDL_G‘E¼Ü +()); + +1471 + `do_ex™ +(1, & +¡©e +); + +1474 + `SDL_S‘HštW™hPriÜ™y +( +SDL_HINT_RENDER_VSYNC +, "1", +SDL_HINT_OVERRIDE +); + +1475 + `SDL_S‘R’d”LogiÿlP»£Á©iÚ +( +¡©e +. +»nd”” +, +DEFAULT_WIDTH +, + +1476 +DEFAULT_HEIGHT +, +SDL_LOGICAL_PRESENTATION_LETTERBOX +); + +1478 + `ÿlcuÏ‹_di¥Ïy_size +(& +¡©e +); + +1480 +¡©e +. +grid + = + `m®loc +(( +C–l +è* +GRID_WIDTH + * +GRID_HEIGHT + + 1); + +1481 ià(! +¡©e +. +grid +) + +1483 + `SDL_LogE¼Ü +( +SDL_LOG_CATEGORY_ERROR +, "calloc failed"); + +1484 + `do_ex™ +(1, & +¡©e +); + +1486  +y + = 0; y < +GRID_HEIGHT +; y++) + +1487  +x + = 0; x < +GRID_WIDTH +; x++) + +1489 +c + = & +¡©e +. +grid +[ + `INDEX +( +x +, +y +)]; + +1490 +coÜds +. +x + = x; + +1491 +coÜds +. +y + = y; + +1492 + `š™_ûÎ +( +c +, & +coÜds +); + +1493 ià( +x + > 0) + +1494 +c +-> +Ëá + = & +¡©e +. +grid +[ + `INDEX +( +x + - 1, +y +)]; + +1495 ià( +y + > 0) + +1496 +c +-> +up + = & +¡©e +. +grid +[ + `INDEX +( +x +, +y + - 1)]; + +1497 ià( +x + < +GRID_WIDTH + - 1) + +1498 +c +-> +right + = & +¡©e +. +grid +[ + `INDEX +( +x + + 1, +y +)]; + +1499 ià( +y + < +GRID_HEIGHT + - 1) + +1500 +c +-> +down + = & +¡©e +. +grid +[ + `INDEX +( +x +, +y + + 1)]; + +1521 ià( + `lßd_‹xtu»s +(& +¡©e +) < 0) + +1522 + `do_ex™ +(1, & +¡©e +); + +1524 +¡©e +. +loÿtiÚ_¡ack + + +1525 ð( +SDL_Pošt +*) + `ÿÎoc +( +LOCATION_STACK_MAX +, (SDL_Point)); + +1526 +¡©e +. +ªim©iÚ +. +aùive + = 0; + +1528 + `SDL_G‘Mou£S�‹ +(& +px +, & +py +); + +1529 +¡©e +. +poš‹r +. +x + = +px +; + +1530 +¡©e +. +poš‹r +. +y + = +py +; + +1532 +Ï¡_time + = + `SDL_G‘Ticks +(); + +1533 + `þock_g‘ýuþockid +( + `g‘pid +(), & +cid +); + +1534 + `þock_g‘time +( +cid +, & +now +); + +1535 + `¤ªdom +( +now +. +tv_£c +); + +1537 +¡©e +. +£ËùiÚ_¡¬t +. +x + = -1; + +1538 +¡©e +. +£ËùiÚ_¡¬t +. +y + = -1; + +1539 +¡©e +. +£ËùiÚ_’d +. +x + = -1; + +1540 +¡©e +. +£ËùiÚ_’d +. +y + = -1; + +1542 + `fžl_Œ�Ët +(& +¡©e +); + +1543  +¡©e +. +rušg +) + +1545 +cu¼’t_time + = + `SDL_G‘Ticks +(); + +1546 ià( +¡©e +. +ªim©iÚ +. +aùive +) + +1548 ià( +cu¼’t_time + > +Ï¡_time + + 1000 / 60) + +1550 + `d¿w +(& +¡©e +); + +1551 + `¡•_ªim©iÚ +(& +¡©e +); + +1552 +Ï¡_time + = +cu¼’t_time +; + +1557 ià( +¡©e +. +»d¿w +) + +1559 + `d¿w +(& +¡©e +); + +1560 +¡©e +. +»d¿w + = 0; + +1564  + `SDL_PÞlEv’t +(& +ev’t +)) + +1565 + `hªdË_ev’t +(& +¡©e +, & +ev’t +); + +1569 + } +} + + @version.h + +5  + #PROGRAM_NAME + "lšije" + + ) + +6  + #DATE + "unknown" + + ) + +7  + #VERSION + "unknown" + + ) + + @/usr/include/assert.h + +45  + ~<sys/cdefs.h +> + +47 #undeà +as£¹ + + +48 #undeà +_as£¹ + + +50 #ifdeà +NDEBUG + + +51  + #as£¹ +( +e +è(()0) + + ) + +52  + #_as£¹ +( +e +è(()0) + + ) + +54  + #_as£¹ +( +e +è + `as£¹ +Ó) + + ) + +55 #ià +__ISO_C_VISIBLE + >= 1999 + +56  + #as£¹ +( +e +è(Óè? ()0 : + `__as£¹2 +( +__FILE__ +, +__LINE__ +, +__func__ +, #e)) + + ) + +58  + #as£¹ +( +e +è(Óè? ()0 : + `__as£¹ +( +__FILE__ +, +__LINE__ +, #e)) + + ) + +62 #iâdeà +_ASSERT_H_ + + +63  + #_ASSERT_H_ + + + ) + +65 #ià +defšed +( +__STDC_VERSION__ +) && __STDC_VERSION__ >= 201112 + +66  + #¡©ic_as£¹ + +_S�tic_as£¹ + + + ) + +69 +__BEGIN_DECLS + + +70 +__d—d +  +__as£¹ +(const *, , const *); + +71 +__d—d +  +__as£¹2 +(const *, , const *, const *); + +72 + g__END_DECLS + + + @/usr/include/errno.h + +39 #iâdef +_ERRNO_H_ + + +40  + #_ERRNO_H_ + + + ) + +42  + ~<sys/”ºo.h +> + +44 + g__BEGIN_DECLS + + +45 #ià +__BSD_VISIBLE + + +46 #iâdef +__SYS_ERRLIST + + +47  + #__SYS_ERRLIST + + + ) + +48  +sys_ü +; + +49 * +sys_”¾i¡ +[]; + +53 #iâdeà +”ºo + + +54 * +__”ºo +(); + +55  + #”ºo + (* + `__”ºo +()) + + ) + +57 + g__END_DECLS + + + @/usr/include/math.h + +17 #iâdeà +_MATH_H_ + + +18  + #_MATH_H_ + + + ) + +20  + ~<sys/_ty³s.h +> + +21  + ~<sys/lim™s.h +> + +23 +__BEGIN_DECLS + + +27  +__šfš™y +[]; + +28 #ià +__GNUC_PREREQ__ +(3, 3) + +29  + #HUGE_VAL + + `__bužtš_huge_v® +() + + ) + +31  + #HUGE_VAL + (*(*)(*) +__šfš™y +) + + ) + +37 #ià +__ISO_C_VISIBLE + >= 1999 + +38  +__doubË_t + + tdoubË_t +; + +39  +__æßt_t + + tæßt_t +; + +41 #ià +__GNUC_PREREQ__ +(3, 3) + +42  + #HUGE_VALF + + `__bužtš_huge_v®f +() + + ) + +43  + #HUGE_VALL + + `__bužtš_huge_v®l +() + + ) + +44  + #INFINITY + + `__bužtš_šff +() + + ) + +45  + #NAN + + `__bužtš_Çnf +("") + + ) + +47  + #HUGE_VALF + (() +HUGE_VAL +) + + ) + +48  + #HUGE_VALL + (() +HUGE_VAL +) + + ) + +49  + #INFINITY + +HUGE_VALF + + + ) + +50  +__Çn +[]; + +51  + #NAN + (*(*)(*) +__Çn +) + + ) + +54  + #FP_INFINITE + 0x01 + + ) + +55  + #FP_NAN + 0x02 + + ) + +56  + #FP_NORMAL + 0x04 + + ) + +57  + #FP_SUBNORMAL + 0x08 + + ) + +58  + #FP_ZERO + 0x10 + + ) + +60  + #FP_ILOGB0 + (- +INT_MAX +) + + ) + +61  + #FP_ILOGBNAN + +INT_MAX + + + ) + +63 #ifdef +__FP_FAST_FMA + + +64  + #FP_FAST_FMA + 1 + + ) + +67 #ifdef +__FP_FAST_FMAF + + +68  + #FP_FAST_FMAF + 1 + + ) + +71 #ifdef +__FP_FAST_FMAL + + +72  + #FP_FAST_FMAL + 1 + + ) + +75  + #MATH_ERRNO + 1 + + ) + +76  + #MATH_ERREXCEPT + 2 + + ) + +77  + #m©h_”rhªdlšg + +MATH_ERREXCEPT + + + ) + +79  + #åþassify +( +x +) \ + +80 (( ( +x +) ==  ()) ? \ + +81 + `__åþassifyf +( +x +) \ + +82 : ( ( +x +) ==  ()) ? \ + +83 + `__åþassify +( +x +) \ + +84 : + `__åþassifyl +( +x +)) + + ) + +85  + #isfš™e +( +x +) \ + +86 (( ( +x +) ==  ()) ? \ + +87 + `__isfš™ef +( +x +) \ + +88 : ( ( +x +) ==  ()) ? \ + +89 + `__isfš™e +( +x +) \ + +90 : + `__isfš™– +( +x +)) + + ) + +91  + #i¢Üm® +( +x +) \ + +92 (( ( +x +) ==  ()) ? \ + +93 + `__i¢Üm®f +( +x +) \ + +94 : ( ( +x +) ==  ()) ? \ + +95 + `__i¢Üm® +( +x +) \ + +96 : + `__i¢Üm®l +( +x +)) + + ) + +97  + #signb™ +( +x +) \ + +98 (( ( +x +) ==  ()) ? \ + +99 + `__signb™f +( +x +) \ + +100 : ( ( +x +) ==  ()) ? \ + +101 + `__signb™ +( +x +) \ + +102 : + `__signb™l +( +x +)) + + ) + +104  + #isg»©” +( +x +, +y +è(! + `isunÜd”ed +((x), (y)è&& (xè> (y)) + + ) + +105  + #isg»©”equ® +( +x +, +y +è(! + `isunÜd”ed +((x), (y)è&& (xè>ð(y)) + + ) + +106  + #i¦ess +( +x +, +y +è(! + `isunÜd”ed +((x), (y)è&& (xè< (y)) + + ) + +107  + #i¦es£qu® +( +x +, +y +è(! + `isunÜd”ed +((x), (y)è&& (xè<ð(y)) + + ) + +108  + #i¦essg»©” +( +x +, +y +è(! + `isunÜd”ed +((x), (y)) && \ + +109 (( +x +è> ( +y +è|| (yè> (x))) + + ) + +110  + #isunÜd”ed +( +x +, +y +è( + `i¢ª +(xè|| i¢ª(y)) + + ) + +113  + #isšf +( +x +) \ + +114 (( ( +x +) ==  ()) ? \ + +115 + `__isšff +( +x +) \ + +116 : ( ( +x +) ==  ()) ? \ + +117 + `__isšf +( +x +) \ + +118 : + `__isšæ +( +x +)) + + ) + +119  + #i¢ª +( +x +) \ + +120 (( ( +x +) ==  ()) ? \ + +121 + `__i¢ªf +( +x +) \ + +122 : ( ( +x +) ==  ()) ? \ + +123 + `__i¢ª +( +x +) \ + +124 : + `__i¢ªl +( +x +)) + + ) + +129 #ià +__BSD_VISIBLE + || +__XPG_VISIBLE + + +130  + #M_E + (()2.7182818284590452354è + + ) + +131  + #M_LOG2E + (()1.4426950408889634074è + + ) + +132  + #M_LOG10E + (()0.43429448190325182765è + + ) + +133  + #M_LN2 + (()0.69314718055994530942è + + ) + +134  + #M_LN10 + (()2.30258509299404568402è + + ) + +135  + #M_PI + (()3.14159265358979323846è + + ) + +136  + #M_PI_2 + (()1.57079632679489661923è + + ) + +137  + #M_PI_4 + (()0.78539816339744830962è + + ) + +138  + #M_1_PI + (()0.31830988618379067154è + + ) + +139  + #M_2_PI + (()0.63661977236758134308è + + ) + +140  + #M_2_SQRTPI + (()1.12837916709551257390è + + ) + +141  + #M_SQRT2 + (()1.41421356237309504880è + + ) + +142  + #M_SQRT1_2 + (()0.70710678118654752440è + + ) + +144  + #MAXFLOAT + (()3.40282346638528860e+38) + + ) + +146  +signgam +; + +149 #ià +__POSIX_VISIBLE + >= 201403 + +150  + #M_El + 2.718281828459045235360287471352662498L + + ) + +151  + #M_LOG2El + 1.442695040888963407359924681001892137L + + ) + +152  + #M_LOG10El + 0.434294481903251827651128918916605082L + + ) + +153  + #M_LN2l + 0.693147180559945309417232121458176568L + + ) + +154  + #M_LN10l + 2.302585092994045684017991454684364208L + + ) + +155  + #M_PIl + 3.141592653589793238462643383279502884L + + ) + +156  + #M_PI_2l + 1.570796326794896619231321691639751442L + + ) + +157  + #M_PI_4l + 0.785398163397448309615660845819875721L + + ) + +158  + #M_1_PIl + 0.318309886183790671537767526745028724L + + ) + +159  + #M_2_PIl + 0.636619772367581343075535053490057448L + + ) + +160  + #M_2_SQRTPIl + 1.128379167095512573896158903121545172L + + ) + +161  + #M_SQRT2l + 1.414213562373095048801688724209698079L + + ) + +162  + #M_SQRT1_2l + 0.707106781186547524400844362104849039L + + ) + +165 #ià +__BSD_VISIBLE + + +166  + #HUGE + +MAXFLOAT + + + ) + +172  +acos +(); + +173  +asš +(); + +174  +©ª +(); + +175  +©ª2 +(, ); + +176  +cos +(); + +177  +sš +(); + +178  +�n +(); + +180  +cosh +(); + +181  +sšh +(); + +182  +�nh +(); + +184  +exp +(); + +185  +äexp +(, *); + +186  +ldexp +(, ); + +187  +log +(); + +188  +log10 +(); + +189  +modf +(, *); + +191  +pow +(, ); + +192  +sq¹ +(); + +194  +ûž +(); + +195  +çbs +(); + +196  +æoÜ +(); + +197  +fmod +(, ); + +202 #ià +__BSD_VISIBLE + || +__ISO_C_VISIBLE + >ð1999 || +__XPG_VISIBLE + + +203  +acosh +(); + +204  +asšh +(); + +205  +©ªh +(); + +207  +exp2 +(); + +208  +expm1 +(); + +209  +žogb +(); + +210  +log1p +(); + +211  +log2 +(); + +212  +logb +(); + +213  +sÿlbn +(, ); + +214  +sÿlbÊ +(, ); + +216  +cb¹ +(); + +217  +hypÙ +(, ); + +219  +”f +(); + +220  +”fc +(); + +221  +lgamma +(); + +222  +tgamma +(); + +224  +ìbyšt +(); + +225  +ršt +(); + +226  +Ìšt +(); + +227  +Îršt +(); + +228  +round +(); + +229  +Ìound +(); + +230  +Îround +(); + +231  +Œunc +(); + +233  +»mašd” +(, ); + +234  +»mquo +(, , *); + +236  +cÝysign +(, ); + +237  +Çn +(const *); + +238  +Ãx�á” +(, ); + +239  +Ãx‰ow¬d +(, ); + +241  +fdim +(, ); + +242  +fmax +(, ); + +243  +fmš +(, ); + +245  +fma +(, , ); + +248 #ià +__BSD_VISIBLE + || +__XPG_VISIBLE + + +249  +j0 +(); + +250  +j1 +(); + +251  +jn +(, ); + +252  +sÿlb +(, ); + +253  +y0 +(); + +254  +y1 +(); + +255  +yn +(, ); + +258 #ià +__BSD_VISIBLE + || +__XPG_VISIBLE + <= 500 + +259  +gamma +(); + +265 #ià +__BSD_VISIBLE + + +266  +d»m +(, ); + +267  +fš™e +(); + +273  +gamma_r +(, *); + +274  +lgamma_r +(, *); + +276  +sšcos +(, *, *); + +281  +signifiÿnd +(); + +287 #ià +__ISO_C_VISIBLE + >= 1999 + +288  +acosf +(); + +289  +asšf +(); + +290  +©ªf +(); + +291  +©ª2f +(, ); + +292  +cosf +(); + +293  +sšf +(); + +294  +�nf +(); + +296  +acoshf +(); + +297  +asšhf +(); + +298  +©ªhf +(); + +299  +coshf +(); + +300  +sšhf +(); + +301  +�nhf +(); + +303  +expf +(); + +304  +exp2f +(); + +305  +expm1f +(); + +306  +äexpf +(, *); + +307  +žogbf +(); + +308  +ldexpf +(, ); + +309  +logf +(); + +310  +log10f +(); + +311  +log1pf +(); + +312  +log2f +(); + +313  +logbf +(); + +314  +modff +(, *); + +315  +sÿlbnf +(, ); + +316  +sÿlbÊf +(, ); + +318  +cb¹f +(); + +319  +çbsf +(); + +320  +hypÙf +(, ); + +321  +powf +(, ); + +322  +sq¹f +(); + +324  +”ff +(); + +325  +”fcf +(); + +326  +lgammaf +(); + +327  +tgammaf +(); + +329  +ûžf +(); + +330  +æoÜf +(); + +331  +ìbyštf +(); + +332  +rštf +(); + +333  +Ìštf +(); + +334  +Îrštf +(); + +335  +roundf +(); + +336  +Ìoundf +(); + +337  +Îroundf +(); + +338  +Œuncf +(); + +340  +fmodf +(, ); + +341  +»mašd”f +(, ); + +342  +»mquof +(, , *); + +344  +cÝysignf +(, ); + +345  +Çnf +(const *); + +346  +Ãx�á”f +(, ); + +347  +Ãx‰ow¬df +(, ); + +349  +fdimf +(, ); + +350  +fmaxf +(, ); + +351  +fmšf +(, ); + +353  +fmaf +(, , ); + +356 #ià +__BSD_VISIBLE + || +__XPG_VISIBLE + + +357  +j0f +(); + +358  +j1f +(); + +359  +jnf +(, ); + +360  +sÿlbf +(, ); + +361  +y0f +(); + +362  +y1f +(); + +363  +ynf +(, ); + +366 #ià +__BSD_VISIBLE + || +__XPG_VISIBLE + <= 500 + +367  +gammaf +(); + +373 #ià +__BSD_VISIBLE + + +374  +d»mf +(, ); + +375  +fš™ef +(); + +376  +isšff +(); + +377  +i¢ªf +(); + +384  +gammaf_r +(, *); + +385  +lgammaf_r +(, *); + +387  +sšcosf +(, *, *); + +392  +signifiÿndf +(); + +398 #ià +__ISO_C_VISIBLE + >= 1999 + +399  +aco¦ +(); + +400  +asšl +(); + +401  +©ªl +(); + +402  +©ª2l +(, ); + +403  +co¦ +(); + +404  +sšl +(); + +405  +�Æ +(); + +407  +acoshl +(); + +408  +asšhl +(); + +409  +©ªhl +(); + +410  +coshl +(); + +411  +sšhl +(); + +412  +�nhl +(); + +414  +ex¶ +(); + +415  +exp2l +(); + +416  +expm1l +(); + +417  +äex¶ +(, *); + +418  +žogbl +(); + +419  +ldex¶ +(, ); + +420  +logl +(); + +421  +log10l +(); + +422  +log1¶ +(); + +423  +log2l +(); + +424  +logbl +(); + +425  +modæ +(, *); + +426  +sÿlbÆ +(, ); + +427  +sÿlbÊl +(, ); + +429  +cb¹l +(); + +430  +çb¦ +(); + +431  +hypÙl +(, ); + +432  +powl +(, ); + +433  +sq¹l +(); + +435  +”æ +(); + +436  +”fþ +(); + +437  +lgamm® +(); + +438  +tgamm® +(); + +440  +ûžl +(); + +441  +æoÜl +(); + +442  +ìbyšŽ +(); + +443  +ršŽ +(); + +444  +ÌšŽ +(); + +445  +ÎršŽ +(); + +446  +roundl +(); + +447  +Ìoundl +(); + +448  +Îroundl +(); + +449  +Œunþ +(); + +451  +fmodl +(, ); + +452  +»mašd”l +(, ); + +453  +»mquÞ +(, , *); + +455  +cÝysigÆ +(, ); + +456  +ÇÆ +(const *); + +457  +Ãx�á”l +(, ); + +458  +Ãx‰ow¬dl +(, ); + +460  +fdiml +(, ); + +461  +fmaxl +(, ); + +462  +fmšl +(, ); + +464  +fm® +(, , ); + +470 #ià +__BSD_VISIBLE + + +471  +sšco¦ +(, *, *); + +477  +__åþassify +(); + +478  +__åþassifyf +(); + +479  +__åþassifyl +(); + +480  +__isfš™e +(); + +481  +__isfš™ef +(); + +482  +__isfš™– +(); + +483  +__isšf +(); + +484  +__isšff +(); + +485  +__isšæ +(); + +486  +__i¢ª +(); + +487  +__i¢ªf +(); + +488  +__i¢ªl +(); + +489  +__i¢Üm® +(); + +490  +__i¢Üm®f +(); + +491  +__i¢Üm®l +(); + +492  +__signb™ +(); + +493  +__signb™f +(); + +494  +__signb™l +(); + +495 + g__END_DECLS + + + @/usr/include/stdarg.h + +18 #iâdeà +_STDARG_H_ + + +19  + #_STDARG_H_ + + + ) + +21  + ~<sys/cdefs.h +> + +25 #iâdeà +__GNUC_VA_LIST + + +26  + #__GNUC_VA_LIST + + + ) + +27  +__bužtš_va_li¡ + + t__gnuc_va_li¡ +; + +34  + #va_¡¬t +( +­ +, +Ï¡ +è + `__bužtš_va_¡¬t +(×p),†a¡) + + ) + +35  + #va_’d +( +­ +è + `__bužtš_va_’d +(×p)) + + ) + +36  + #va_¬g +( +­ +, +ty³ +è + `__bužtš_va_¬g +(×p),�y³) + + ) + +37  + #__va_cÝy +( +d¡ +, +¤c +è + `__bužtš_va_cÝy +((d¡),(¤c)) + + ) + +39  +__gnuc_va_li¡ + + tva_li¡ +; + +41 #ià +__ISO_C_VISIBLE + >= 1999 + +42  + #va_cÝy +( +d¡ +, +¤c +è + `__va_cÝy +((d¡), (¤c)) + + ) + + @/usr/include/stdio.h + +38 #iâdef +_STDIO_H_ + + +39  + #_STDIO_H_ + + + ) + +41  + ~<sys/cdefs.h +> + +42  + ~<sys/_nuÎ.h +> + +43  + ~<sys/_ty³s.h +> + +45 #ià +__BSD_VISIBLE + || +__POSIX_VISIBLE + || +__XPG_VISIBLE + + +46  + ~<sys/ty³s.h +> + +49 #iâdef +_SIZE_T_DEFINED_ + + +50  + #_SIZE_T_DEFINED_ + + + ) + +51  +__size_t + + tsize_t +; + +54 #iâdef +_OFF_T_DEFINED_ + + +55  + #_OFF_T_DEFINED_ + + + ) + +56  +__off_t + + toff_t +; + +59  + #_FSTDIO + + + ) + +61  +off_t + + tåos_t +; + +70  + s__sbuf + { + +71 * + m_ba£ +; + +72  + m_size +; + +99  + s__sFILE + { + +100 * + m_p +; + +101  + m_r +; + +102  + m_w +; + +103  + m_æags +; + +104  + m_fže +; + +105  +__sbuf + + m_bf +; + +106  + m_lbfsize +; + +109 * + m_cook› +; + +110 (* + m_þo£ +)(*); + +111 (* + m_»ad +)(*, *, ); + +112 +åos_t + (* +_£ek +)(*, + måos_t +, ); + +113 (* + m_wr™e +)(*, const *, ); + +116  +__sbuf + + m_ext +; + +118 * + m_up +; + +119  + m_ur +; + +122  + m_ubuf +[3]; + +123  + m_nbuf +[1]; + +126  +__sbuf + + m_lb +; + +129  + m_blksize +; + +130 +åos_t + + m_off£t +; + +131 } + tFILE +; + +133 +__BEGIN_DECLS + + +134 +FILE + +__sF +[]; + +135 + g__END_DECLS + + +137  + #__SLBF + 0x0001 + + ) + +138  + #__SNBF + 0x0002 + + ) + +139  + #__SRD + 0x0004 + + ) + +140  + #__SWR + 0x0008 + + ) + +142  + #__SRW + 0x0010 + + ) + +143  + #__SEOF + 0x0020 + + ) + +144  + #__SERR + 0x0040 + + ) + +145  + #__SMBF + 0x0080 + + ) + +146  + #__SAPP + 0x0100 + + ) + +147  + #__SSTR + 0x0200 + + ) + +148  + #__SOPT + 0x0400 + + ) + +149  + #__SNPT + 0x0800 + + ) + +150  + #__SOFF + 0x1000 + + ) + +151  + #__SMOD + 0x2000 + + ) + +152  + #__SALC + 0x4000 + + ) + +153  + #__SIGN + 0x8000 + + ) + +164  + #_IOFBF + 0 + + ) + +165  + #_IOLBF + 1 + + ) + +166  + #_IONBF + 2 + + ) + +168  + #BUFSIZ + 1024 + + ) + +170  + #EOF + (-1) + + ) + +177  + #FOPEN_MAX + 20 + + ) + +178  + #FILENAME_MAX + 1024 + + ) + +181 #ià +__BSD_VISIBLE + || +__XPG_VISIBLE + + +182  + #P_tmpdœ + "/tmp/" + + ) + +184  + #L_tm²am + 1024 + + ) + +185  + #TMP_MAX + 0x7ffffffà + + ) + +187 #iâdeà +SEEK_SET + + +188  + #SEEK_SET + 0 + + ) + +190 #iâdeà +SEEK_CUR + + +191  + #SEEK_CUR + 1 + + ) + +193 #iâdeà +SEEK_END + + +194  + #SEEK_END + 2 + + ) + +197  + #¡dš + (& +__sF +[0]) + + ) + +198  + #¡dout + (& +__sF +[1]) + + ) + +199  + #¡d”r + (& +__sF +[2]) + + ) + +204 +__BEGIN_DECLS + + +205  +þ—»¼ +( +FILE + *); + +206 #ià +__POSIX_VISIBLE + >= 200809 + +207  + $d´štf +(, cÚ¡ * +__»¡riù +, ...) + +208 + `__©Œibu‹__ +(( + $__fÜm©__ + ( +´štf +, 2, 3))) + +209 + `__©Œibu‹__ +(( + `__nÚnuÎ__ + (2))); + +211  + `fþo£ +( +FILE + *); + +212  + `ãof +( +FILE + *); + +213  + `ã¼Ü +( +FILE + *); + +214  + `fæush +( +FILE + *); + +215  + `fg‘c +( +FILE + *); + +216  + `fg‘pos +( +FILE + *, +åos_t + *); + +217 * + $fg‘s +(*, , +FILE + *) + +218 + `__©Œibu‹__ +(( + `__bounded__ + ( +__¡ršg__ +,1,2))); + +219 +FILE + * + `fÝ’ +(const *, const *); + +220  + `årštf +( +FILE + *, cÚ¡ * +__»¡riù +, ...); + +221  + `åutc +(, +FILE + *); + +222  + `åuts +(cÚ¡ *, +FILE + *); + +223 +size_t + + $ä—d +(*, +size_t +, size_t, +FILE + *) + +224 + `__©Œibu‹__ +(( + `__bounded__ + ( +__size__ +,1,3,2))); + +225 +FILE + * + `äeÝ’ +(const *, const *, FILE *); + +226  + `fsÿnf +( +FILE + *, const *, ...); + +227  + `f£ek +( +FILE + *, , ); + +228  + `f£eko +( +FILE + *, +off_t +, ); + +229  + `f£�os +( +FILE + *, cÚ¡ +åos_t + *); + +230  + `á–l +( +FILE + *); + +231 +off_t + + `á–lo +( +FILE + *); + +232 +size_t + + $fwr™e +(cÚ¡ *, +size_t +, size_t, +FILE + *) + +233 + `__©Œibu‹__ +(( + `__bounded__ + ( +__size__ +,1,3,2))); + +234  + `g‘c +( +FILE + *); + +235  + `g‘ch¬ +(); + +236 #ià +__POSIX_VISIBLE + >= 200809 + +237 +ssize_t + + `g‘d–im +(** +__»¡riù +, +size_t + * __restrict, , + +238 +FILE + * +__»¡riù +); + +239 +ssize_t + + `g‘lše +(** +__»¡riù +, +size_t + * __restrict, + +240 +FILE + * +__»¡riù +); + +242 #ià +__BSD_VISIBLE + && ! + `defšed +( +__SYS_ERRLIST +) + +243  + #__SYS_ERRLIST + + + ) + +245  +sys_ü +; + +246 * +sys_”¾i¡ +[]; + +248  + `³¼Ü +(const *); + +249  + `´štf +(cÚ¡ * +__»¡riù +, ...); + +250  + `putc +(, +FILE + *); + +251  + `putch¬ +(); + +252  + `puts +(const *); + +253  + `»move +(const *); + +254  + `»Çme +(const *, const *); + +255 #ià +__POSIX_VISIBLE + >= 200809 + +256  + `»Çm—t +(, const *, , const *); + +258  + `»wšd +( +FILE + *); + +259  + `sÿnf +(const *, ...); + +260  + `£tbuf +( +FILE + *, *); + +261  + `£tvbuf +( +FILE + *, *, , +size_t +); + +262  + `¥rštf +(* +__»¡riù +, const * __restrict, ...); + +263  + `ssÿnf +(const *, const *, ...); + +264 +FILE + * + `tmpfže +(); + +265 * + `tm²am +(*); + +266  + `ung‘c +(, +FILE + *); + +267  + `vårštf +( +FILE + *, cÚ¡ * +__»¡riù +, +__va_li¡ +); + +268  + `v´štf +(cÚ¡ * +__»¡riù +, +__va_li¡ +); + +269  + `v¥rštf +(* +__»¡riù +, cÚ¡ * __»¡riù, +__va_li¡ +); + +270 #ià +__POSIX_VISIBLE + >= 200809 + +271  + $vd´štf +(, cÚ¡ * +__»¡riù +, +__va_li¡ +) + +272 + `__©Œibu‹__ +(( + $__fÜm©__ + ( +´štf +, 2, 0))) + +273 + `__©Œibu‹__ +(( + `__nÚnuÎ__ + (2))); + +276 #ià +__ISO_C_VISIBLE + >ð1999 || +__XPG_VISIBLE + >ð500 || +__BSD_VISIBLE + + +277  + $¢´štf +(* +__»¡riù +, +size_t +, const * __restrict, ...) + +278 + `__©Œibu‹__ +(( + $__fÜm©__ + ( +´štf +, 3, 4))) + +279 + `__©Œibu‹__ +(( + $__nÚnuÎ__ + (3))) + +280 + `__©Œibu‹__ +(( + `__bounded__ + ( +__¡ršg__ +,1,2))); + +281  + $v¢´štf +(* +__»¡riù +, +size_t +, const * __restrict, + +282 +__va_li¡ +) + +283 + `__©Œibu‹__ +(( + $__fÜm©__ + ( +´štf +, 3, 0))) + +284 + `__©Œibu‹__ +(( + $__nÚnuÎ__ + (3))) + +285 + `__©Œibu‹__ +(( + `__bounded__ +( +__¡ršg__ +,1,2))); + +288 #ià +__ISO_C_VISIBLE + >ð1999 || +__BSD_VISIBLE + + +289  + $vfsÿnf +( +FILE + *, cÚ¡ *, +__va_li¡ +) + +290 + `__©Œibu‹__ +(( + $__fÜm©__ + ( +sÿnf +, 2, 0))) + +291 + `__©Œibu‹__ +(( + `__nÚnuÎ__ + (2))); + +292  + $vsÿnf +(cÚ¡ *, +__va_li¡ +) + +293 + `__©Œibu‹__ +(( + $__fÜm©__ + ( +sÿnf +, 1, 0))) + +294 + `__©Œibu‹__ +(( + `__nÚnuÎ__ + (1))); + +295  + $vssÿnf +(cÚ¡ *, cÚ¡ *, +__va_li¡ +) + +296 + `__©Œibu‹__ +(( + $__fÜm©__ + ( +sÿnf +, 2, 0))) + +297 + `__©Œibu‹__ +(( + `__nÚnuÎ__ + (2))); + +300 +__END_DECLS + + +306 #ià +__BSD_VISIBLE + || +__POSIX_VISIBLE + || +__XPG_VISIBLE + + +307  + #L_ù”mid + 1024 + + ) + +309 +__BEGIN_DECLS + + +310 * + `ù”mid +(*); + +311 +FILE + * + `fdÝ’ +(, const *); + +312  + `fž’o +( +FILE + *); + +314 #ià +__POSIX_VISIBLE + >= 199209 + +315  + `pþo£ +( +FILE + *); + +316 +FILE + * + `pÝ’ +(const *, const *); + +319 #ià +__POSIX_VISIBLE + >= 199506 + +320  + `æockfže +( +FILE + *); + +321  + `árylockfže +( +FILE + *); + +322  + `fuÆockfže +( +FILE + *); + +328  + `g‘c_uÆocked +( +FILE + *); + +329  + `g‘ch¬_uÆocked +(); + +330  + `putc_uÆocked +(, +FILE + *); + +331  + `putch¬_uÆocked +(); + +334 #ià +__POSIX_VISIBLE + >= 200809 + +335 +FILE + * + `fmemÝ’ +(*, +size_t +, const *); + +336 +FILE + * + `Ý’_mem¡»am +(**, +size_t + *); + +339 #ià +__XPG_VISIBLE + + +340 * + `‹m²am +(const *, const *); + +343 #ià +__POSIX_VISIBLE + >ð202405 || +__BSD_VISIBLE + + +344  + $a¥rštf +(** +__»¡riù +, const * __restrict, ...) + +345 + `__©Œibu‹__ +(( + $__fÜm©__ + ( +´štf +, 2, 3))) + +346 + `__©Œibu‹__ +(( + `__nÚnuÎ__ + (2))); + +347  + $va¥rštf +(** +__»¡riù +, cÚ¡ * __»¡riù, +__va_li¡ +) + +348 + `__©Œibu‹__ +(( + $__fÜm©__ + ( +´štf +, 2, 0))) + +349 + `__©Œibu‹__ +(( + `__nÚnuÎ__ + (2))); + +351 +__END_DECLS + + +358 #ià +__BSD_VISIBLE + + +359 +__BEGIN_DECLS + + +360 * + `fg‘Ê +( +FILE + *, +size_t + *); + +361  + `åurge +( +FILE + *); + +362  + `g‘w +( +FILE + *); + +363  + `putw +(, +FILE + *); + +364  + `£tbufãr +( +FILE + *, *, ); + +365  + `£Žšebuf +( +FILE + *); + +366 +__END_DECLS + + +371 +__BEGIN_DECLS + + +372 +FILE + * + `funÝ’ +(const *, + +375 + $off_t + (*)(*, +off_t +, ), + +377 +__END_DECLS + + +378  + #äÝ’ +( +cook› +, +â +è + `funÝ’ +(cook›, fn, 0, 0, 0) + + ) + +379  + #fwÝ’ +( +cook› +, +â +è + `funÝ’ +(cook›, 0, fn, 0, 0) + + ) + +385 +__BEGIN_DECLS + + +386  + `__¤g‘ +( +FILE + *); + +387  + `__swbuf +(, +FILE + *); + +388 +__END_DECLS + + +394  + #__sg‘c +( +p +è(--Õ)-> +_r + < 0 ? + `__¤g‘ +Õè: ()(*Õ)-> +_p +++)) + + ) + +395  +__šlše +  + $__¥utc +( +_c +, +FILE + * +_p +) { + +396 ià(-- +_p +-> +_w + >ð0 || (_p->_w >ð_p-> +_lbfsize + && () +_c + != '\n')) + +397  (* +_p +->_p++ = +_c +); + +399  ( + `__swbuf +( +_c +, +_p +)); + +400 + } +} + +402  + #__sãof +( +p +è((Õ)-> +_æags + & +__SEOF +è!ð0) + + ) + +403  + #__sã¼Ü +( +p +è((Õ)-> +_æags + & +__SERR +è!ð0) + + ) + +404  + #__sþ—»¼ +( +p +è(()(Õ)-> +_æags + &ð~( +__SERR +| +__SEOF +))) + + ) + +405  + #__sfž’o +( +p +è(Õ)-> +_fže +) + + ) + +407  +__i¡h»aded +; + +409  + #ãof +( +p +è(! +__i¡h»aded + ? + `__sãof +Õè: ( +ãof +)Õ)) + + ) + +410  + #ã¼Ü +( +p +è(! +__i¡h»aded + ? + `__sã¼Ü +Õè: ( +ã¼Ü +)Õ)) + + ) + +411  + #þ—»¼ +( +p +è(! +__i¡h»aded + ? + `__sþ—»¼ +Õè: ( +þ—»¼ +)Õ)) + + ) + +413 #ià +__POSIX_VISIBLE + + +414  + #fž’o +( +p +è(! +__i¡h»aded + ? + `__sfž’o +Õè: ( +fž’o +)Õ)) + + ) + +417  + #g‘c +( +å +è(! +__i¡h»aded + ? + `__sg‘c +(åè: ( +g‘c +)(å)) + + ) + +419 #ià +__BSD_VISIBLE + + +424  + #putc +( +x +, +å +è(! +__i¡h»aded + ? + `__¥utc +(x, fpè: ( +putc +)(x, fp)) + + ) + +427 #ià +__POSIX_VISIBLE + >= 199506 + +428  + #g‘c_uÆocked +( +å +è + `__sg‘c +(å) + + ) + +433 #ià +__BSD_VISIBLE + + +434  + #putc_uÆocked +( +x +, +å +è + `__¥utc +(x, fp) + + ) + +438  + #g‘ch¬ +(è + `g‘c +( +¡dš +) + + ) + +439  + #putch¬ +( +x +è + `putc +(x, +¡dout +) + + ) + +440  + #g‘ch¬_uÆocked +(è + `g‘c_uÆocked +( +¡dš +) + + ) + +441  + #putch¬_uÆocked +( +c +è + `putc_uÆocked +(c, +¡dout +) + + ) + + @/usr/include/stdlib.h + +35 #iâdeà +_STDLIB_H_ + + +36  + #_STDLIB_H_ + + + ) + +38  + ~<sys/cdefs.h +> + +39  + ~<sys/_nuÎ.h +> + +40  + ~<machše/_ty³s.h +> + +41 #ià +__BSD_VISIBLE + + +42  + ~<sys/ty³s.h +> + +45 #iâdef +_SIZE_T_DEFINED_ + + +46  + #_SIZE_T_DEFINED_ + + + ) + +47  +__size_t + + tsize_t +; + +51 #ià! +defšed +( +_WCHAR_T_DEFINED_ +è&& !defšed( +__ýlu¥lus +) + +52  + #_WCHAR_T_DEFINED_ + + + ) + +53  +__wch¬_t + + twch¬_t +; + +57  + mquÙ +; + +58  + m»m +; + +59 } + tdiv_t +; + +62  + mquÙ +; + +63  + m»m +; + +64 } + tldiv_t +; + +66 #ià +__ISO_C_VISIBLE + >= 1999 + +68  + mquÙ +; + +69  + m»m +; + +70 } + tÎdiv_t +; + +73 #ià +__BSD_VISIBLE + + +75 +quad_t + + mquÙ +; + +76 +quad_t + + m»m +; + +77 } + tqdiv_t +; + +80  + #EXIT_FAILURE + 1 + + ) + +81  + #EXIT_SUCCESS + 0 + + ) + +83  + #RAND_MAX + 0x7fffffff + + ) + +85  + #MB_CUR_MAX + + `__mb_cur_max +() + + ) + +91 #ifdeà +abs + + +92 #undeà +abs + + +93 #w¬nšg +abs + +maüo + +cÞlides + +w™h +‡bs(è +´ÙÙy³ +, +undefššg + + +96 +__BEGIN_DECLS + + +97 +__d—d +  +abÜt +(); + +98  +abs +(); + +99  +©ex™ +((*)()); + +100  + `©of +(const *); + +101  + `©oi +(const *); + +102  + `©Þ +(const *); + +103 * + `b£¬ch +(cÚ¡ *, cÚ¡ *, +size_t +, size_t, + +105 * + `ÿÎoc +( +size_t +, size_t); + +106 +div_t + + `div +(, ); + +107 +__d—d +  + `ex™ +(); + +108 +__d—d +  + `_Ex™ +(); + +109  + `ä“ +(*); + +110 * + `g‘’v +(const *); + +111  + `Ïbs +(); + +112 +ldiv_t + + `ldiv +(, ); + +113 * + `m®loc +( +size_t +); + +114 #ià +__BSD_VISIBLE + + +115  + $ä“z”o +(*, +size_t +) + +116 + `__©Œibu‹__ + (( + `__bounded__ +( +__bufãr__ +,1,2))); + +117 * + `ÿÎoc_cÚû® +( +size_t +, size_t); + +118 * + `m®loc_cÚû® +( +size_t +); + +119 * + `»ÿÎoÿ¼ay +(*, +size_t +, size_t, size_t); + +121  + `qsÜt +(*, +size_t +, size_t, (*)(const *, const *)); + +122  + `¿nd +(); + +123 * + `»®loc +(*, +size_t +); + +124  + `¤ªd +(); + +125  + `¤ªd_d‘”mši¡ic +(); + +126  + `¡¹od +(cÚ¡ * +__»¡riù +, **__restrict); + +127  + `¡¹of +(cÚ¡ * +__»¡riù +, **__restrict); + +128  + `¡¹Þ +(cÚ¡ * +__»¡riù +, **__restrict, ); + +130 + `¡¹Þd +(cÚ¡ * +__»¡riù +, **__restrict); + +132 + `¡¹oul +(cÚ¡ * +__»¡riù +, **__restrict, ); + +133  + `sy¡em +(const *); + +135 +size_t + + `__mb_cur_max +(); + +136  + `mbËn +(cÚ¡ *, +size_t +); + +137 +size_t + + `mb¡owcs +( +wch¬_t + *, const *, size_t); + +138  + `wùomb +(*, +wch¬_t +); + +139  + `mbtowc +( +wch¬_t + *, cÚ¡ *, +size_t +); + +140 +size_t + + `wc¡ombs +(*, cÚ¡ +wch¬_t + *, size_t); + +145 #ià +__BSD_VISIBLE + || +__POSIX_VISIBLE + >ð199506 || + `defšed +( +_REENTRANT +) + +146  + `¿nd_r +(*); + +149 #ià +__BSD_VISIBLE + || +__XPG_VISIBLE + >= 400 + +150  + `d¿nd48 +(); + +151  + `”ªd48 +([3]); + +152  + `j¿nd48 +([3]); + +153  + `lcÚg48 +([7]); + +154  + `lcÚg48_d‘”mši¡ic +([7]); + +155  + `̪d48 +(); + +156  + `m¿nd48 +(); + +157  + `Īd48 +([3]); + +158 * + `£ed48 +([3]); + +159 * + `£ed48_d‘”mši¡ic +([3]); + +160  + `¤ªd48 +(); + +161  + `¤ªd48_d‘”mši¡ic +(); + +163  + `pu‹nv +(*); + +170 #ià +__BSD_VISIBLE + || +__XPG_VISIBLE + < 700 + +171 * + `ecvt +(, , *, *); + +172 * + `fcvt +(, , *, *); + +173 * + `gcvt +(, , *); + +174 #ià +__BSD_VISIBLE + || +__XPG_VISIBLE + >= 420 + +175 * + `mk‹mp +(*); + +179 #ià +__BSD_VISIBLE + || +__XPG_VISIBLE + >= 420 + +180  + `a64l +(const *); + +181 * + `l64a +(); + +183 * + $𙡩e +(, *, +size_t +) + +184 + `__©Œibu‹__ +(( + `__bounded__ + ( +__¡ršg__ +,2,3))); + +185  + `¿ndom +(); + +186 * + `£t¡©e +(*); + +187  + `¤ªdom +(); + +188  + `¤ªdom_d‘”mši¡ic +(); + +190 * + $»®·th +(const *, *) + +191 + `__©Œibu‹__ +(( + `__bounded__ + ( +__mšby‹s__ +,2,1024))); + +196 #ià +__BSD_VISIBLE + || +__XPG_VISIBLE + < 600 + +197  + `‰y¦Ù +(); + +198 * + `v®loc +( +size_t +); + +205 #ià +__BSD_VISIBLE + || +__XPG_VISIBLE + >ð420 || +__POSIX_VISIBLE + >= 200809 + +206  + `mk¡emp +(*); + +212 #ià +__ISO_C_VISIBLE + >= 1999 + +214 + `©Þl +(const *); + +216 + `Îabs +(); + +217 +Îdiv_t + + +218 + `Îdiv +(, ); + +220 + `¡¹Þl +(cÚ¡ * +__»¡riù +, **__restrict, ); + +222 + `¡¹ouÎ +(cÚ¡ * +__»¡riù +, **__restrict, ); + +225 #ià +__ISO_C_VISIBLE + >= 2011 + +227 + `®igÃd_®loc +( +size_t +, size_t); + +233 #ià +__BSD_VISIBLE + || +__POSIX_VISIBLE + >= 200112 + +234  + `posix_mem®ign +(**, +size_t +, size_t); + +235  + `£‹nv +(const *, const *, ); + +236  + `un£‹nv +(const *); + +238 #ià +__XPG_VISIBLE + >ð420 || +__POSIX_VISIBLE + >= 200112 + +239 * + `±¢ame +(); + +240  + `g¿Á± +(); + +241  + `uÆock± +(); + +243 #ià +__POSIX_VISIBLE + >= 200112 + +244  + `posix_Ý’± +(); + +250 #ià +__BSD_VISIBLE + || +__POSIX_VISIBLE + >= 200809 + +251 * + `mkd‹mp +(*); + +254 #ià +__XPG_VISIBLE + >ð420 || +__POSIX_VISIBLE + >= 200809 + +255  + `g‘subÝt +(**, * const *, **); + +261 #ià +__POSIX_VISIBLE + >ð202405 || +__BSD_VISIBLE + + +262  + `mko¡emp +(*, ); + +263 * + `»®loÿ¼ay +(*, +size_t +, size_t); + +266 #ià +__BSD_VISIBLE + + +267  + #®loÿ +( +n +è + `__bužtš_®loÿ +Ò) + + ) + +269 * + `g‘bsize +(*, *); + +270 * + `cg‘ÿp +(*, const *, ); + +271  + `cg‘þo£ +(); + +272  + `cg‘’t +(**, **, const *); + +273  + `cg‘fœ¡ +(**, **); + +274  + `cg‘m©ch +(*, const *); + +275  + `cg‘Ãxt +(**, **); + +276  + `cg‘num +(*, const *, *); + +277  + `cg‘£t +(const *); + +278  + `cg‘u£db +(); + +279  + `cg‘¡r +(*, const *, **); + +280  + `cg‘u¡r +(*, const *, **); + +282  + `d«mÚ +(, ); + +283 * + `devÇme +( +dev_t +, +mode_t +); + +284  + `g‘lßdavg +([], ); + +287 + `g‘´ogÇme +(); + +288  + `£�rogÇme +(const *); + +290 * +subÝ�rg +; + +292 * + `mkd‹mps +(*, ); + +293  + `mk¡emps +(*, ); + +294  + `mko¡emps +(*, , ); + +296  + `h—psÜt +(*, +size_t +, size_t, (*)(const *, const *)); + +297  + `m”gesÜt +(*, +size_t +, size_t, (*)(const *, const *)); + +298  + `¿dixsÜt +(const **, , const *, + +300  + `¤adixsÜt +(const **, , const *, + +303  + `¤ªdomdev +(); + +305 + `¡¹Úum +(const *, , , const **); + +307  + $£�roù™Ë +(const *, ...) + +308 + `__©Œibu‹__ +(( + `__fÜm©__ + ( +__´štf__ +, 1, 2))); + +310 +quad_t + + `qabs +(quad_t); + +311 +qdiv_t + + `qdiv +( +quad_t +, quad_t); + +312 +quad_t + + `¡¹oq +(cÚ¡ * +__»¡riù +, **__restrict, ); + +313 +u_quad_t + + `¡¹ouq +(cÚ¡ * +__»¡riù +, **__restrict, ); + +315 +ušt32_t + + `¬c4¿ndom +(); + +316 +ušt32_t + + `¬c4¿ndom_unifÜm +(uint32_t); + +317  + $¬c4¿ndom_buf +(*, +size_t +) + +318 + `__©Œibu‹__ +(( + `__bounded__ + ( +__bufãr__ +,1,2))); + +322 +__END_DECLS + + + @/usr/include/time.h + +41 #iâdeà +_TIME_H_ + + +42  + #_TIME_H_ + + + ) + +44  + ~<sys/cdefs.h +> + +45  + ~<sys/_nuÎ.h +> + +46  + ~<sys/_ty³s.h +> + +47  + ~<sys/_time.h +> + +49 #iâdef +_CLOCK_T_DEFINED_ + + +50  + #_CLOCK_T_DEFINED_ + + + ) + +51  +__þock_t + + tþock_t +; + +54 #iâdef +_TIME_T_DEFINED_ + + +55  + #_TIME_T_DEFINED_ + + + ) + +56  +__time_t + + ttime_t +; + +59 #iâdef +_SIZE_T_DEFINED_ + + +60  + #_SIZE_T_DEFINED_ + + + ) + +61  +__size_t + + tsize_t +; + +64 #ià +__POSIX_VISIBLE + > 0 && __POSIX_VISIBLE < 200112 || +__BSD_VISIBLE + + +69  + #CLK_TCK + 100 + + ) + +72 #ià +__POSIX_VISIBLE + >= 199309 + +73 #iâdef +_CLOCKID_T_DEFINED_ + + +74  + #_CLOCKID_T_DEFINED_ + + + ) + +75  +__þockid_t + + tþockid_t +; + +78 #iâdef +_TIMER_T_DEFINED_ + + +79  + #_TIMER_T_DEFINED_ + + + ) + +80  +__tim”_t + + ttim”_t +; + +84 #ià +__POSIX_VISIBLE + >= 200112 + +85 #iâdef +_PID_T_DEFINED_ + + +86  + #_PID_T_DEFINED_ + + + ) + +87  +__pid_t + + tpid_t +; + +91 #ià +__POSIX_VISIBLE + >= 200809 + +92 #iâdef +_LOCALE_T_DEFINED_ + + +93  + #_LOCALE_T_DEFINED_ + + + ) + +94 * + tloÿË_t +; + +98  + stm + { + +99  + mtm_£c +; + +100  + mtm_mš +; + +101  + mtm_hour +; + +102  + mtm_mday +; + +103  + mtm_mÚ +; + +104  + mtm_y—r +; + +105  + mtm_wday +; + +106  + mtm_yday +; + +107  + mtm_isd¡ +; + +108  + mtm_gmtoff +; + +109 * + mtm_zÚe +; + +112 +__BEGIN_DECLS + + +113 * +asùime +(cÚ¡  +tm + *); + +114 +þock_t + +þock +(); + +115 * +ùime +(cÚ¡ +time_t + *); + +116  +difáime +( +time_t +,�ime_t); + +117  +tm + * +gmtime +(cÚ¡ +time_t + *); + +118  +tm + * +loÿÉime +(cÚ¡ +time_t + *); + +119 +time_t + +mktime +( +tm + *); + +120 +size_t + + $¡ráime +(* +__»¡riù +, +size_t +, const *__restrict, + +121 cÚ¡  +tm + * +__»¡riù +) + +122 + `__©Œibu‹__ + (( + `__bounded__ +( +__¡ršg__ +,1,2))); + +123 +time_t + + `time +(time_t *); + +125 #ià +__XPG_VISIBLE + >= 300 + +126  +daylight +; + +127  +timezÚe +; + +129 #ià +__XPG_VISIBLE + >= 400 + +130 * + `¡½time +(cÚ¡ * +__»¡riù +, const *__restrict, + +131  +tm + * +__»¡riù +); + +134 #ià +__POSIX_VISIBLE + >= 199506 + +135 * + $asùime_r +(cÚ¡  +tm + * +__»¡riù +, *__restrict) + +136 + `__©Œibu‹__ + (( + `__bounded__ +( +__mšby‹s__ +,2,26))); + +137 * + $ùime_r +(cÚ¡ +time_t + *, *) + +138 + `__©Œibu‹__ + (( + `__bounded__ +( +__mšby‹s__ +,2,26))); + +139  +tm + * + `gmtime_r +(cÚ¡ +time_t + * +__»¡riù +, tm *__restrict); + +140  +tm + * + `loÿÉime_r +(cÚ¡ +time_t + * +__»¡riù +, tm *__restrict); + +143 #ià +__POSIX_VISIBLE + + +144 * +tzÇme +[2]; + +145  + `tz£t +(); + +148 #ià +__POSIX_VISIBLE + >= 199309 + +149  + `þock_g‘»s +( +þockid_t +,  +time¥ec + *); + +150  + `þock_g‘time +( +þockid_t +,  +time¥ec + *); + +151  + `þock_£‰ime +( +þockid_t +, cÚ¡  +time¥ec + *); + +152  + `Çno¦“p +(cÚ¡  +time¥ec + *, timespec *); + +155 #ià +__POSIX_VISIBLE + >= 200112 + +156  + `þock_g‘ýuþockid +( +pid_t +, +þockid_t + *); + +159 #ià +__POSIX_VISIBLE + >= 200809 + +160 +size_t + + $¡ráime_l +(* +__»¡riù +, +size_t +, const *__restrict, + +161 cÚ¡  +tm + * +__»¡riù +, +loÿË_t +) + +162 + `__©Œibu‹__ + (( + `__bounded__ +( +__¡ršg__ +,1,2))); + +165 #ià +__ISO_C_VISIBLE + >= 2011 + +166  + #TIME_UTC + 1 + + ) + +167  + `time¥ec_g‘ +( +time¥ec + * +_ts +,  +_ba£ +); + +170 #ià +__BSD_VISIBLE + + +171  + `tz£tw®l +(); + +172 +time_t + + `tim–oÿl +( +tm + *); + +173 +time_t + + `timegm +( +tm + *); + +174 +time_t + + `timeoff +( +tm + *, const ); + +176 +__END_DECLS + + + @/usr/include/unistd.h + +35 #iâdeà +_UNISTD_H_ + + +36  + #_UNISTD_H_ + + + ) + +38  + ~<sys/_nuÎ.h +> + +39  + ~<sys/ty³s.h +> + +40  + ~<sys/uni¡d.h +> + +42  + #STDIN_FILENO + 0 + + ) + +43  + #STDOUT_FILENO + 1 + + ) + +44  + #STDERR_FILENO + 2 + + ) + +46 #ià +__XPG_VISIBLE + || +__POSIX_VISIBLE + >= 200112 + +47  + #F_ULOCK + 0 + + ) + +48  + #F_LOCK + 1 + + ) + +49  + #F_TLOCK + 2 + + ) + +50  + #F_TEST + 3 + + ) + +65  + #_POSIX_ADVISORY_INFO + (-1) + + ) + +66  + #_POSIX_ASYNCHRONOUS_IO + (-1) + + ) + +67  + #_POSIX_BARRIERS + 200112L + + ) + +68  + #_POSIX_CHOWN_RESTRICTED + 1 + + ) + +69  + #_POSIX_CLOCK_SELECTION + (-1) + + ) + +70  + #_POSIX_CPUTIME + 200809L + + ) + +71  + #_POSIX_FSYNC + 200112L + + ) + +72  + #_POSIX_IPV6 + 0 + + ) + +73  + #_POSIX_JOB_CONTROL + 1 + + ) + +74  + #_POSIX_MAPPED_FILES + 200112L + + ) + +75  + #_POSIX_MEMLOCK + 200112L + + ) + +76  + #_POSIX_MEMLOCK_RANGE + 200112L + + ) + +77  + #_POSIX_MEMORY_PROTECTION + 200112L + + ) + +78  + #_POSIX_MESSAGE_PASSING + (-1) + + ) + +79  + #_POSIX_MONOTONIC_CLOCK + 200112L + + ) + +80  + #_POSIX_NO_TRUNC + 1 + + ) + +81  + #_POSIX_PRIORITIZED_IO + (-1) + + ) + +82  + #_POSIX_PRIORITY_SCHEDULING + (-1) + + ) + +83  + #_POSIX_RAW_SOCKETS + 200112L + + ) + +84  + #_POSIX_READER_WRITER_LOCKS + 200112L + + ) + +85  + #_POSIX_REALTIME_SIGNALS + (-1) + + ) + +86  + #_POSIX_REGEXP + 1 + + ) + +87  + #_POSIX_SAVED_IDS + 1 + + ) + +88  + #_POSIX_SEMAPHORES + 200112L + + ) + +89  + #_POSIX_SHARED_MEMORY_OBJECTS + 200809L + + ) + +90  + #_POSIX_SHELL + 1 + + ) + +91  + #_POSIX_SPAWN + 200112L + + ) + +92  + #_POSIX_SPIN_LOCKS + 200112L + + ) + +93  + #_POSIX_SPORADIC_SERVER + (-1) + + ) + +94  + #_POSIX_SYNCHRONIZED_IO + (-1) + + ) + +95  + #_POSIX_THREAD_ATTR_STACKADDR + 200112L + + ) + +96  + #_POSIX_THREAD_ATTR_STACKSIZE + 200112L + + ) + +97  + #_POSIX_THREAD_CPUTIME + 200809L + + ) + +98  + #_POSIX_THREAD_PRIO_INHERIT + (-1) + + ) + +99  + #_POSIX_THREAD_PRIO_PROTECT + (-1) + + ) + +100  + #_POSIX_THREAD_PRIORITY_SCHEDULING + (-1) + + ) + +101  + #_POSIX_THREAD_PROCESS_SHARED + (-1) + + ) + +102  + #_POSIX_THREAD_ROBUST_PRIO_INHERIT + (-1) + + ) + +103  + #_POSIX_THREAD_ROBUST_PRIO_PROTECT + (-1) + + ) + +104  + #_POSIX_THREAD_SAFE_FUNCTIONS + 200112L + + ) + +105  + #_POSIX_THREAD_SPORADIC_SERVER + (-1) + + ) + +106  + #_POSIX_THREADS + 200112L + + ) + +107  + #_POSIX_TIMEOUTS + 200112L + + ) + +108  + #_POSIX_TIMERS + (-1) + + ) + +109  + #_POSIX_TRACE + (-1) + + ) + +110  + #_POSIX_TRACE_EVENT_FILTER + (-1) + + ) + +111  + #_POSIX_TRACE_INHERIT + (-1) + + ) + +112  + #_POSIX_TRACE_LOG + (-1) + + ) + +113  + #_POSIX_TYPED_MEMORY_OBJECTS + (-1) + + ) + +114  + #_POSIX2_C_BIND + 200112L + + ) + +115  + #_POSIX2_C_DEV + (-1è + + ) + +116  + #_POSIX2_CHAR_TERM + 1 + + ) + +117  + #_POSIX2_FORT_DEV + (-1è + + ) + +118  + #_POSIX2_FORT_RUN + (-1è + + ) + +119  + #_POSIX2_LOCALEDEF + (-1) + + ) + +120  + #_POSIX2_PBS + (-1) + + ) + +121  + #_POSIX2_PBS_ACCOUNTING + (-1) + + ) + +122  + #_POSIX2_PBS_CHECKPOINT + (-1) + + ) + +123  + #_POSIX2_PBS_LOCATE + (-1) + + ) + +124  + #_POSIX2_PBS_MESSAGE + (-1) + + ) + +125  + #_POSIX2_PBS_TRACK + (-1) + + ) + +126  + #_POSIX2_SW_DEV + 200112L + + ) + +127  + #_POSIX2_UPE + 200112L + + ) + +128  + #_POSIX_V6_ILP32_OFF32 + (-1) + + ) + +129  + #_POSIX_V6_ILP32_OFFBIG + 0 + + ) + +130  + #_POSIX_V6_LP64_OFF64 + 0 + + ) + +131  + #_POSIX_V6_LPBIG_OFFBIG + 0 + + ) + +132  + #_POSIX_V7_ILP32_OFF32 + (-1) + + ) + +133  + #_POSIX_V7_ILP32_OFFBIG + 0 + + ) + +134  + #_POSIX_V7_LP64_OFF64 + 0 + + ) + +135  + #_POSIX_V7_LPBIG_OFFBIG + 0 + + ) + +137  + #_XOPEN_CRYPT + 1 + + ) + +138  + #_XOPEN_ENH_I18N + (-1è + + ) + +139  + #_XOPEN_LEGACY + (-1) + + ) + +140  + #_XOPEN_REALTIME + (-1) + + ) + +141  + #_XOPEN_REALTIME_THREADS + (-1) + + ) + +142  + #_XOPEN_SHM + 1 + + ) + +143  + #_XOPEN_STREAMS + (-1) + + ) + +144  + #_XOPEN_UUCP + (-1) + + ) + +145  + #_XOPEN_UNIX + (-1) + + ) + +148  + #_POSIX2_VERSION + 200809L + + ) + +153  + #_SC_ARG_MAX + 1 + + ) + +154  + #_SC_CHILD_MAX + 2 + + ) + +155  + #_SC_CLK_TCK + 3 + + ) + +156  + #_SC_NGROUPS_MAX + 4 + + ) + +157  + #_SC_OPEN_MAX + 5 + + ) + +158  + #_SC_JOB_CONTROL + 6 + + ) + +159  + #_SC_SAVED_IDS + 7 + + ) + +160  + #_SC_VERSION + 8 + + ) + +161  + #_SC_BC_BASE_MAX + 9 + + ) + +162  + #_SC_BC_DIM_MAX + 10 + + ) + +163  + #_SC_BC_SCALE_MAX + 11 + + ) + +164  + #_SC_BC_STRING_MAX + 12 + + ) + +165  + #_SC_COLL_WEIGHTS_MAX + 13 + + ) + +166  + #_SC_EXPR_NEST_MAX + 14 + + ) + +167  + #_SC_LINE_MAX + 15 + + ) + +168  + #_SC_RE_DUP_MAX + 16 + + ) + +169  + #_SC_2_VERSION + 17 + + ) + +170  + #_SC_2_C_BIND + 18 + + ) + +171  + #_SC_2_C_DEV + 19 + + ) + +172  + #_SC_2_CHAR_TERM + 20 + + ) + +173  + #_SC_2_FORT_DEV + 21 + + ) + +174  + #_SC_2_FORT_RUN + 22 + + ) + +175  + #_SC_2_LOCALEDEF + 23 + + ) + +176  + #_SC_2_SW_DEV + 24 + + ) + +177  + #_SC_2_UPE + 25 + + ) + +178  + #_SC_STREAM_MAX + 26 + + ) + +179  + #_SC_TZNAME_MAX + 27 + + ) + +180  + #_SC_PAGESIZE + 28 + + ) + +181  + #_SC_PAGE_SIZE + +_SC_PAGESIZE + + + ) + +182  + #_SC_FSYNC + 29 + + ) + +183  + #_SC_XOPEN_SHM + 30 + + ) + +184  + #_SC_SEM_NSEMS_MAX + 31 + + ) + +185  + #_SC_SEM_VALUE_MAX + 32 + + ) + +186  + #_SC_HOST_NAME_MAX + 33 + + ) + +187  + #_SC_MONOTONIC_CLOCK + 34 + + ) + +188  + #_SC_2_PBS + 35 + + ) + +189  + #_SC_2_PBS_ACCOUNTING + 36 + + ) + +190  + #_SC_2_PBS_CHECKPOINT + 37 + + ) + +191  + #_SC_2_PBS_LOCATE + 38 + + ) + +192  + #_SC_2_PBS_MESSAGE + 39 + + ) + +193  + #_SC_2_PBS_TRACK + 40 + + ) + +194  + #_SC_ADVISORY_INFO + 41 + + ) + +195  + #_SC_AIO_LISTIO_MAX + 42 + + ) + +196  + #_SC_AIO_MAX + 43 + + ) + +197  + #_SC_AIO_PRIO_DELTA_MAX + 44 + + ) + +198  + #_SC_ASYNCHRONOUS_IO + 45 + + ) + +199  + #_SC_ATEXIT_MAX + 46 + + ) + +200  + #_SC_BARRIERS + 47 + + ) + +201  + #_SC_CLOCK_SELECTION + 48 + + ) + +202  + #_SC_CPUTIME + 49 + + ) + +203  + #_SC_DELAYTIMER_MAX + 50 + + ) + +204  + #_SC_IOV_MAX + 51 + + ) + +205  + #_SC_IPV6 + 52 + + ) + +206  + #_SC_MAPPED_FILES + 53 + + ) + +207  + #_SC_MEMLOCK + 54 + + ) + +208  + #_SC_MEMLOCK_RANGE + 55 + + ) + +209  + #_SC_MEMORY_PROTECTION + 56 + + ) + +210  + #_SC_MESSAGE_PASSING + 57 + + ) + +211  + #_SC_MQ_OPEN_MAX + 58 + + ) + +212  + #_SC_MQ_PRIO_MAX + 59 + + ) + +213  + #_SC_PRIORITIZED_IO + 60 + + ) + +214  + #_SC_PRIORITY_SCHEDULING + 61 + + ) + +215  + #_SC_RAW_SOCKETS + 62 + + ) + +216  + #_SC_READER_WRITER_LOCKS + 63 + + ) + +217  + #_SC_REALTIME_SIGNALS + 64 + + ) + +218  + #_SC_REGEXP + 65 + + ) + +219  + #_SC_RTSIG_MAX + 66 + + ) + +220  + #_SC_SEMAPHORES + 67 + + ) + +221  + #_SC_SHARED_MEMORY_OBJECTS + 68 + + ) + +222  + #_SC_SHELL + 69 + + ) + +223  + #_SC_SIGQUEUE_MAX + 70 + + ) + +224  + #_SC_SPAWN + 71 + + ) + +225  + #_SC_SPIN_LOCKS + 72 + + ) + +226  + #_SC_SPORADIC_SERVER + 73 + + ) + +227  + #_SC_SS_REPL_MAX + 74 + + ) + +228  + #_SC_SYNCHRONIZED_IO + 75 + + ) + +229  + #_SC_SYMLOOP_MAX + 76 + + ) + +230  + #_SC_THREAD_ATTR_STACKADDR + 77 + + ) + +231  + #_SC_THREAD_ATTR_STACKSIZE + 78 + + ) + +232  + #_SC_THREAD_CPUTIME + 79 + + ) + +233  + #_SC_THREAD_DESTRUCTOR_ITERATIONS + 80 + + ) + +234  + #_SC_THREAD_KEYS_MAX + 81 + + ) + +235  + #_SC_THREAD_PRIO_INHERIT + 82 + + ) + +236  + #_SC_THREAD_PRIO_PROTECT + 83 + + ) + +237  + #_SC_THREAD_PRIORITY_SCHEDULING + 84 + + ) + +238  + #_SC_THREAD_PROCESS_SHARED + 85 + + ) + +239  + #_SC_THREAD_ROBUST_PRIO_INHERIT + 86 + + ) + +240  + #_SC_THREAD_ROBUST_PRIO_PROTECT + 87 + + ) + +241  + #_SC_THREAD_SPORADIC_SERVER + 88 + + ) + +242  + #_SC_THREAD_STACK_MIN + 89 + + ) + +243  + #_SC_THREAD_THREADS_MAX + 90 + + ) + +244  + #_SC_THREADS + 91 + + ) + +245  + #_SC_TIMEOUTS + 92 + + ) + +246  + #_SC_TIMER_MAX + 93 + + ) + +247  + #_SC_TIMERS + 94 + + ) + +248  + #_SC_TRACE + 95 + + ) + +249  + #_SC_TRACE_EVENT_FILTER + 96 + + ) + +250  + #_SC_TRACE_EVENT_NAME_MAX + 97 + + ) + +251  + #_SC_TRACE_INHERIT + 98 + + ) + +252  + #_SC_TRACE_LOG + 99 + + ) + +253  + #_SC_GETGR_R_SIZE_MAX + 100 + + ) + +254  + #_SC_GETPW_R_SIZE_MAX + 101 + + ) + +255  + #_SC_LOGIN_NAME_MAX + 102 + + ) + +256  + #_SC_THREAD_SAFE_FUNCTIONS + 103 + + ) + +257  + #_SC_TRACE_NAME_MAX + 104 + + ) + +258  + #_SC_TRACE_SYS_MAX + 105 + + ) + +259  + #_SC_TRACE_USER_EVENT_MAX + 106 + + ) + +260  + #_SC_TTY_NAME_MAX + 107 + + ) + +261  + #_SC_TYPED_MEMORY_OBJECTS + 108 + + ) + +262  + #_SC_V6_ILP32_OFF32 + 109 + + ) + +263  + #_SC_V6_ILP32_OFFBIG + 110 + + ) + +264  + #_SC_V6_LP64_OFF64 + 111 + + ) + +265  + #_SC_V6_LPBIG_OFFBIG + 112 + + ) + +266  + #_SC_V7_ILP32_OFF32 + 113 + + ) + +267  + #_SC_V7_ILP32_OFFBIG + 114 + + ) + +268  + #_SC_V7_LP64_OFF64 + 115 + + ) + +269  + #_SC_V7_LPBIG_OFFBIG + 116 + + ) + +270  + #_SC_XOPEN_CRYPT + 117 + + ) + +271  + #_SC_XOPEN_ENH_I18N + 118 + + ) + +272  + #_SC_XOPEN_LEGACY + 119 + + ) + +273  + #_SC_XOPEN_REALTIME + 120 + + ) + +274  + #_SC_XOPEN_REALTIME_THREADS + 121 + + ) + +275  + #_SC_XOPEN_STREAMS + 122 + + ) + +276  + #_SC_XOPEN_UNIX + 123 + + ) + +277  + #_SC_XOPEN_UUCP + 124 + + ) + +278  + #_SC_XOPEN_VERSION + 125 + + ) + +280  + #_SC_PHYS_PAGES + 500 + + ) + +281  + #_SC_AVPHYS_PAGES + 501 + + ) + +282  + #_SC_NPROCESSORS_CONF + 502 + + ) + +283  + #_SC_NPROCESSORS_ONLN + 503 + + ) + +286  + #_CS_PATH + 1 + + ) + +287  + #_CS_POSIX_V6_ILP32_OFF32_CFLAGS + 2 + + ) + +288  + #_CS_POSIX_V6_ILP32_OFF32_LDFLAGS + 3 + + ) + +289  + #_CS_POSIX_V6_ILP32_OFF32_LIBS + 4 + + ) + +290  + #_CS_POSIX_V6_ILP32_OFFBIG_CFLAGS + 5 + + ) + +291  + #_CS_POSIX_V6_ILP32_OFFBIG_LDFLAGS + 6 + + ) + +292  + #_CS_POSIX_V6_ILP32_OFFBIG_LIBS + 7 + + ) + +293  + #_CS_POSIX_V6_LP64_OFF64_CFLAGS + 8 + + ) + +294  + #_CS_POSIX_V6_LP64_OFF64_LDFLAGS + 9 + + ) + +295  + #_CS_POSIX_V6_LP64_OFF64_LIBS + 10 + + ) + +296  + #_CS_POSIX_V6_LPBIG_OFFBIG_CFLAGS + 11 + + ) + +297  + #_CS_POSIX_V6_LPBIG_OFFBIG_LDFLAGS + 12 + + ) + +298  + #_CS_POSIX_V6_LPBIG_OFFBIG_LIBS + 13 + + ) + +299  + #_CS_POSIX_V6_WIDTH_RESTRICTED_ENVS + 14 + + ) + +300  + #_CS_V6_ENV + 15 + + ) + +301  + #_CS_POSIX_V7_ILP32_OFF32_CFLAGS + 16 + + ) + +302  + #_CS_POSIX_V7_ILP32_OFF32_LDFLAGS + 17 + + ) + +303  + #_CS_POSIX_V7_ILP32_OFF32_LIBS + 18 + + ) + +304  + #_CS_POSIX_V7_ILP32_OFFBIG_CFLAGS + 19 + + ) + +305  + #_CS_POSIX_V7_ILP32_OFFBIG_LDFLAGS + 20 + + ) + +306  + #_CS_POSIX_V7_ILP32_OFFBIG_LIBS + 21 + + ) + +307  + #_CS_POSIX_V7_LP64_OFF64_CFLAGS + 22 + + ) + +308  + #_CS_POSIX_V7_LP64_OFF64_LDFLAGS + 23 + + ) + +309  + #_CS_POSIX_V7_LP64_OFF64_LIBS + 24 + + ) + +310  + #_CS_POSIX_V7_LPBIG_OFFBIG_CFLAGS + 25 + + ) + +311  + #_CS_POSIX_V7_LPBIG_OFFBIG_LDFLAGS + 26 + + ) + +312  + #_CS_POSIX_V7_LPBIG_OFFBIG_LIBS + 27 + + ) + +313  + #_CS_POSIX_V7_THREADS_CFLAGS + 28 + + ) + +314  + #_CS_POSIX_V7_THREADS_LDFLAGS + 29 + + ) + +315  + #_CS_POSIX_V7_WIDTH_RESTRICTED_ENVS + 30 + + ) + +316  + #_CS_V7_ENV + 31 + + ) + +318 #iâdef +_INTPTR_T_DEFINED_ + + +319  + #_INTPTR_T_DEFINED_ + + + ) + +320  +__š�Œ_t + + tš�Œ_t +; + +323 +__BEGIN_DECLS + + +324 +__d—d +  +_ex™ +(); + +325  +acûss +(const *, ); + +326  +®¬m +(); + +327  +chdœ +(const *); + +328  +chown +(cÚ¡ *, +uid_t +, +gid_t +); + +329  +þo£ +(); + +330  +dup +(); + +331  +dup2 +(, ); + +332  + $exeþ +(const *, const *, ...) + +333 + `__©Œibu‹__ +(( +__£Áš–__ +)); + +334  + `exeþe +(const *, const *, ...); + +335  + $exeþp +(const *, const *, ...) + +336 + `__©Œibu‹__ +(( +__£Áš–__ +)); + +337  + `execv +(const *, *const *); + +338  + `execve +(const *, *const *, *const *); + +339  + `execvp +(const *, *const *); + +340 #ià +__BSD_VISIBLE + + +341  + `execv³ +(const *, *const *, *const *); + +343 +pid_t + + `fÜk +(); + +344  + `å©hcÚf +(, ); + +345 * + $g‘cwd +(*, +size_t +) + +346 + `__©Œibu‹__ +(( + `__bounded__ +( +__¡ršg__ +,1,2))); + +347 +gid_t + + `g‘egid +(); + +348 +uid_t + + `g‘euid +(); + +349 +gid_t + + `g‘gid +(); + +350  + `g‘groups +(, +gid_t + *); + +351 * + `g‘logš +(); + +352 +pid_t + + `g‘pg½ +(); + +353 +pid_t + + `g‘pid +(); + +354 +pid_t + + `g‘µid +(); + +355 +uid_t + + `g‘uid +(); + +356  + `i§‰y +(); + +357  + `lšk +(const *, const *); + +358 +off_t + + `l£ek +(, off_t, ); + +359  + `·thcÚf +(const *, ); + +360 #ià +__BSD_VISIBLE + + +361  + `·thcÚçt +(, const *, , ); + +363  + `·u£ +(); + +364  + `p�e +(*); + +365 +ssize_t + + $»ad +(, *, +size_t +) + +366 + `__©Œibu‹__ +(( + `__bounded__ +( +__bufãr__ +,2,3))); + +367  + `rmdœ +(const *); + +368  + `£tgid +( +gid_t +); + +369  + `£tuid +( +uid_t +); + +370  + `¦“p +(); + +371  + `syscÚf +(); + +372 +pid_t + + `tcg‘pg½ +(); + +373  + `tc£�g½ +(, +pid_t +); + +374 * + `‰yÇme +(); + +375  + `uÆšk +(const *); + +376 +ssize_t + + $wr™e +(, cÚ¡ *, +size_t +) + +377 + `__©Œibu‹__ +(( + `__bounded__ +( +__bufãr__ +,2,3))); + +379 #ià +__POSIX_VISIBLE + || +__XPG_VISIBLE + >= 300 + +380 +pid_t + + `£tsid +(); + +381  + `£�gid +( +pid_t +,…id_t); + +384 #ià +__POSIX_VISIBLE + >ð199209 || +__XPG_VISIBLE + + +385 +size_t + + $cÚf¡r +(, *, +size_t +) + +386 + `__©Œibu‹__ +(( + `__bounded__ +( +__¡ršg__ +,2,3))); + +387 #iâdeà +_GETOPT_DEFINED_ + + +388  + #_GETOPT_DEFINED_ + + + ) + +389  + `g‘Ýt +(, * const *, const *); + +390 * +Ý�rg +; + +391  +Ý‹¼ +, +Ýtšd +, +ÝtÝt +, +ÝŒe£t +; + +395 #ià +__POSIX_VISIBLE + >ð199506 || +__XPG_VISIBLE + + +396  + `fsync +(); + +397  + `árunÿ‹ +(, +off_t +); + +398  + $g‘logš_r +(*, +size_t +) + +399 + `__©Œibu‹__ +(( + `__bounded__ +( +__¡ršg__ +,1,2))); + +400 +ssize_t + + $»adlšk +(cÚ¡ * +__»¡riù +, * __»¡riù, +size_t +) + +401 + `__©Œibu‹__ + (( + `__bounded__ +( +__¡ršg__ +,2,3))); + +403 #ià +__POSIX_VISIBLE + >= 199506 + +404  + `fd©async +(); + +407 #ià +__XPG_VISIBLE + || +__BSD_VISIBLE + + +408 * + `üy± +(const *, const *); + +409  + `fchdœ +(); + +410  + `fchown +(, +uid_t +, +gid_t +); + +411  + `g‘ho¡id +(); + +412 * + $g‘wd +(*) + +413 + `__©Œibu‹__ + (( + `__bounded__ +( +__mšby‹s__ +,1,1024))); + +414  + `lchown +(cÚ¡ *, +uid_t +, +gid_t +); + +415  + `mk¡emp +(*); + +416 * + `mk‹mp +(*); + +417  + `niû +(); + +418  + `£Œegid +( +gid_t +, gid_t); + +419  + `£Œeuid +( +uid_t +, uid_t); + +420  + `swab +(cÚ¡ * +__»¡riù +, *__»¡riù, +ssize_t +); + +421  + `sync +(); + +422  + `Œunÿ‹ +(cÚ¡ *, +off_t +); + +423 +u£cÚds_t + + `u®¬m +(useconds_t, useconds_t); + +424  + `u¦“p +( +u£cÚds_t +); + +425 +pid_t + + `vfÜk +(); + +428 #ià +__POSIX_VISIBLE + >ð200809 || +__XPG_VISIBLE + >= 420 + +429 +pid_t + + `g‘pgid +(pid_t); + +430 +pid_t + + `g‘sid +(pid_t); + +433 #ià +__XPG_VISIBLE + >= 500 + +434 +ssize_t + + $´—d +(, *, +size_t +, +off_t +) + +435 + `__©Œibu‹__ +(( + `__bounded__ +( +__bufãr__ +,2,3))); + +436 +ssize_t + + $pwr™e +(, cÚ¡ *, +size_t +, +off_t +) + +437 + `__©Œibu‹__ +(( + `__bounded__ +( +__bufãr__ +,2,3))); + +438  + $‰yÇme_r +(, *, +size_t +) + +439 + `__©Œibu‹__ +(( + `__bounded__ +( +__¡ršg__ +,2,3))); + +442 #ià +__BSD_VISIBLE + || +__XPG_VISIBLE + <= 500 + +444  + `brk +(*); + +445  + `chroÙ +(const *); + +446  + `g‘d�bËsize +(); + +447  + `g‘·gesize +(); + +448 * + `g‘·ss +(const *); + +449 * + `sbrk +(); + +452 #ià +__POSIX_VISIBLE + >ð200112 || +__XPG_VISIBLE + >= 420 + +453  + `lockf +(, , +off_t +); + +456 #ià +__POSIX_VISIBLE + >ð200112 || +__XPG_VISIBLE + >ð420 || +__BSD_VISIBLE + + +457  + `symlšk +(const *, const *); + +458  + $g‘ho¡Çme +(*, +size_t +) + +459 + `__©Œibu‹__ + (( + `__bounded__ +( +__¡ršg__ +,1,2))); + +460  + `£‹gid +( +gid_t +); + +461  + `£‹uid +( +uid_t +); + +464 #ià +__POSIX_VISIBLE + >= 200809 + +465  + `çcûs§t +(, const *, , ); + +466  + `fchowÇt +(, cÚ¡ *, +uid_t +, +gid_t +, ); + +467  + `lšk© +(, const *, , const *, ); + +468 +ssize_t + + $»adlšk© +(, cÚ¡ *, *, +size_t +) + +469 + `__©Œibu‹__ + (( + `__bounded__ +( +__¡ršg__ +,3,4))); + +470  + `symlšk© +(const *, , const *); + +471  + `uÆšk© +(, const *, ); + +474 #ià +__POSIX_VISIBLE + >ð202405 || +__BSD_VISIBLE + + +475  + `g‘’ŒÝy +(*, +size_t +); + +477 #ià +__XPG_VISIBLE + >ð800 || +__BSD_VISIBLE + + +478  + `g‘»sgid +( +gid_t + *, gid_t *, gid_t *); + +479  + `g‘»suid +( +uid_t + *, uid_t *, uid_t *); + +480  + `£Œesgid +( +gid_t +, gid_t, gid_t); + +481  + `£Œesuid +( +uid_t +, uid_t, uid_t); + +484 #ià +__BSD_VISIBLE + + +485  + `dup3 +(, , ); + +486  + `p�e2 +([2], ); + +489 #ià +__BSD_VISIBLE + + +490  + `acù +(const *); + +491  + `þo£äom +(); + +492  + `üy±_check·ss +(const *, const *); + +493  + `üy±_Ãwhash +(cÚ¡ *, cÚ¡ *, *, +size_t +); + +494  + `’du£rsh–l +(); + +495 * + `fæag¡o¡r +( +u_št32_t +); + +496  + $g‘domašÇme +(*, +size_t +) + +497 + `__©Œibu‹__ + (( + `__bounded__ +( +__¡ršg__ +,1,2))); + +498  + `g‘d�bËcouÁ +(); + +499  + `g‘grou¶i¡ +(cÚ¡ *, +gid_t +, gid_t *, *); + +500 +mode_t + + `g‘mode +(const *, mode_t); + +501 +pid_t + + `g‘thrid +(); + +502  + `g‘thºame +( +pid_t +, *, +size_t +); + +503 * + `g‘u£rsh–l +(); + +504  + `š™groups +(cÚ¡ *, +gid_t +); + +505  + `is£tugid +(); + +506 * + `mkd‹mp +(*); + +507  + `mk¡emps +(*, ); + +508  + `nfssvc +(, *); + +509  + $´ofž +(*, +size_t +, , ) + +510 + `__©Œibu‹__ + (( + `__bounded__ +( +__¡ršg__ +,1,2))); + +511  + `quÙaùl +(const *, , , *); + +512  + `rcmd +(**, , const *, + +514  + `rcmd_af +(**, , const *, + +516  + `rcmdsh +(**, , const *, + +518  + `»boÙ +(); + +519  + `»voke +(const *); + +520  + `¼esvpÜt +(*); + +521  + `¼esvpÜt_af +(*, ); + +522  + `ru£rok +(const *, , const *, const *); + +523  + `£tdomašÇme +(cÚ¡ *, +size_t +); + +524  + `£tgroups +(, cÚ¡ +gid_t + *); + +525  + `£tho¡id +(); + +526  + `£tho¡Çme +(cÚ¡ *, +size_t +); + +527  + `£Žogš +(const *); + +528 * + `£tmode +(const *); + +529  + `£�g½ +( +pid_t + +_pid +,…id_ˆ +_pg½ +); + +530  + `£‰hºame +( +pid_t +, const *); + +531  + `£tu£rsh–l +(); + +532  + `¡¹ofæags +(**, +u_št32_t + *, u_int32_t *); + +533  + `sw­ùl +( +cmd +, cÚ¡ * +¬g +,  +misc +); + +534  + `¶edge +(const *, const *); + +535  + `unvež +(const *, const *); + +536 +pid_t + + `__tfÜk_th»ad +(cÚ¡  +__tfÜk + *, +size_t +, (*)(*), + +539 +__END_DECLS + + + @/usr/include/machine/_types.h + +35 #iâdeà +_MACHINE__TYPES_H_ + + +36  + #_MACHINE__TYPES_H_ + + + ) + +48  + #_ALIGNBYTES + ((è- 1) + + ) + +49  + #_STACKALIGNBYTES + 15 + + ) + +50  + #_ALIGN +( +p +è((()Õè+ +_ALIGNBYTES +è&~_ALIGNBYTES) + + ) + +51  + #_ALIGNED_POINTER +( +p +, +t +è1 + + ) + +52  + #_MAX_PAGE_SHIFT + 12 + + ) + +54 #ià +defšed +( +_KERNEL +) + +55  + sÏb–_t + { + +56  + mv® +[8]; + +57 } + tÏb–_t +; + +61 sigÃd  + t__št8_t +; + +62  + t__ušt8_t +; + +63  + t__št16_t +; + +64  + t__ušt16_t +; + +65  + t__št32_t +; + +66  + t__ušt32_t +; + +67  + t__št64_t +; + +68  + t__ušt64_t +; + +71  +__št8_t + + t__št_Ëa¡8_t +; + +72  +__ušt8_t + + t__ušt_Ëa¡8_t +; + +73  +__št16_t + + t__št_Ëa¡16_t +; + +74  +__ušt16_t + + t__ušt_Ëa¡16_t +; + +75  +__št32_t + + t__št_Ëa¡32_t +; + +76  +__ušt32_t + + t__ušt_Ëa¡32_t +; + +77  +__št64_t + + t__št_Ëa¡64_t +; + +78  +__ušt64_t + + t__ušt_Ëa¡64_t +; + +81  +__št32_t + + t__št_ç¡8_t +; + +82  +__ušt32_t + + t__ušt_ç¡8_t +; + +83  +__št32_t + + t__št_ç¡16_t +; + +84  +__ušt32_t + + t__ušt_ç¡16_t +; + +85  +__št32_t + + t__št_ç¡32_t +; + +86  +__ušt32_t + + t__ušt_ç¡32_t +; + +87  +__št64_t + + t__št_ç¡64_t +; + +88  +__ušt64_t + + t__ušt_ç¡64_t +; + +89  + #__INT_FAST8_MIN + +INT32_MIN + + + ) + +90  + #__INT_FAST16_MIN + +INT32_MIN + + + ) + +91  + #__INT_FAST32_MIN + +INT32_MIN + + + ) + +92  + #__INT_FAST64_MIN + +INT64_MIN + + + ) + +93  + #__INT_FAST8_MAX + +INT32_MAX + + + ) + +94  + #__INT_FAST16_MAX + +INT32_MAX + + + ) + +95  + #__INT_FAST32_MAX + +INT32_MAX + + + ) + +96  + #__INT_FAST64_MAX + +INT64_MAX + + + ) + +97  + #__UINT_FAST8_MAX + +UINT32_MAX + + + ) + +98  + #__UINT_FAST16_MAX + +UINT32_MAX + + + ) + +99  + #__UINT_FAST32_MAX + +UINT32_MAX + + + ) + +100  + #__UINT_FAST64_MAX + +UINT64_MAX + + + ) + +103  + t__š�Œ_t +; + +104  + t__uš�Œ_t +; + +107  +__št64_t + + t__štmax_t +; + +108  +__ušt64_t + + t__uštmax_t +; + +111  + t__»gi¡”_t +; + +114  + t__vaddr_t +; + +115  + t__·ddr_t +; + +116  + t__vsize_t +; + +117  + t__psize_t +; + +120  + t__doubË_t +; + +121  + t__æßt_t +; + +122  + t__±rdiff_t +; + +123  + t__size_t +; + +124  + t__ssize_t +; + +125 #ià +defšed +( +__GNUC__ +) && __GNUC__ >= 3 + +126  +__bužtš_va_li¡ + + t__va_li¡ +; + +128 * + t__va_li¡ +; + +132 #iâdeà +__ýlu¥lus + + +133  + t__wch¬_t +; + +135  + t__wšt_t +; + +136  + t__ruÃ_t +; + +137 * + t__wù¿ns_t +; + +138 * + t__wùy³_t +; + + @/usr/include/sys/_null.h + +8 #iâdeà +NULL + + +9 #ià! +defšed +( +__ýlu¥lus +) + +10  + #NULL + ((*)0) + + ) + +11 #–ià +__ýlu¥lus + >= 201103L + +12  + #NULL + +nuαr + + + ) + +13 #–ià +defšed +( +__GNUG__ +) + +14  + #NULL + +__nuÎ + + + ) + +16  + #NULL + 0L + + ) + + @/usr/include/sys/_time.h + +32 #iâdeà +_SYS__TIME_H_ + + +33  + #_SYS__TIME_H_ + + + ) + +36  + #CLOCKS_PER_SEC + 100 + + ) + +38 #ià +__BSD_VISIBLE + + +43  + #__CLOCK_ENCODE +( +ty³ +, +id +è(Ñy³è| ((idè<< 12)) + + ) + +44  + #__CLOCK_TYPE +( +c +è((cè& 0xfff) + + ) + +45  + #__CLOCK_PTID +( +c +è(((cè>> 12è& 0xfffff) + + ) + +48 #ià +__POSIX_VISIBLE + >ð199309 || +__ISO_C_VISIBLE + >= 2011 + +49 #iâdeà +_TIME_T_DEFINED_ + + +50  + #_TIME_T_DEFINED_ + + + ) + +51  +__time_t + + ttime_t +; + +54 #iâdeà +_TIMESPEC_DECLARED + + +55  + #_TIMESPEC_DECLARED + + + ) + +56  + stime¥ec + { + +57 +time_t + + mtv_£c +; + +58  + mtv_n£c +; + +63 #ià +__POSIX_VISIBLE + >= 199309 + +64  + #CLOCK_REALTIME + 0 + + ) + +65  + #CLOCK_PROCESS_CPUTIME_ID + 2 + + ) + +66  + #CLOCK_MONOTONIC + 3 + + ) + +67  + #CLOCK_THREAD_CPUTIME_ID + 4 + + ) + +68  + #CLOCK_UPTIME + 5 + + ) + +69  + #CLOCK_BOOTTIME + 6 + + ) + +75  + s™im”¥ec + { + +76  +time¥ec + + m™_š‹rv® +; + +77  +time¥ec + + m™_v®ue +; + +80  + #TIMER_RELTIME + 0x0 + + ) + +81  + #TIMER_ABSTIME + 0x1 + + ) + + @/usr/include/sys/_types.h + +34 #iâdeà +_SYS__TYPES_H_ + + +35  + #_SYS__TYPES_H_ + + + ) + +37  + ~<machše/_ty³s.h +> + +39  +__št64_t + + t__blkút_t +; + +40  +__št32_t + + t__blksize_t +; + +41  +__št64_t + + t__þock_t +; + +42  +__št32_t + + t__þockid_t +; + +43  + t__ýuid_t +; + +44  +__št32_t + + t__dev_t +; + +45  +__ušt32_t + + t__fix±_t +; + +46  +__ušt64_t + + t__fsblkút_t +; + +47  +__ušt64_t + + t__fsfžút_t +; + +48  +__ušt32_t + + t__gid_t +; + +49  +__ušt32_t + + t__id_t +; + +50  +__ušt32_t + + t__š_addr_t +; + +51  +__ušt16_t + + t__š_pÜt_t +; + +52  +__ušt64_t + + t__šo_t +; + +53  + t__key_t +; + +54  +__ušt32_t + + t__mode_t +; + +55  +__ušt32_t + + t__Æšk_t +; + +56  +__št64_t + + t__off_t +; + +57  +__št32_t + + t__pid_t +; + +58  +__ušt64_t + + t__¾im_t +; + +59  +__ušt8_t + + t__§_çmžy_t +; + +60  +__št32_t + + t__£gsz_t +; + +61  +__ušt32_t + + t__sockËn_t +; + +62  + t__su£cÚds_t +; + +63  +__št64_t + + t__time_t +; + +64  +__št32_t + + t__tim”_t +; + +65  +__ušt32_t + + t__uid_t +; + +66  +__ušt32_t + + t__u£cÚds_t +; + +73  + m__mb¡©e8 +[128]; + +74 +__št64_t + + m__mb¡©eL +; + +75 } + t__mb¡©e_t +; + + @/usr/include/sys/cdefs.h + +38 #iâdef +_SYS_CDEFS_H_ + + +39  + #_SYS_CDEFS_H_ + + + ) + +41  + ~<machše/cdefs.h +> + +46 #ifdeà +__GNUC__ + + +47  + #__GNUC_PREREQ__ +( +ma +, +mi +) \ + +48 (( +__GNUC__ + > ( +ma +)è|| (__GNUC__ =ð(maè&& +__GNUC_MINOR__ + >ð( +mi +))) + + ) + +50  + #__GNUC_PREREQ__ +( +ma +, +mi +è0 + + ) + +61 #ià +defšed +( +__STDC__ +è|| defšed( +__ýlu¥lus +) + +62  + #__P +( +´Ùos +è´Ùo  + + ) + +63  + #__CONCAT +( +x +, +y +èx ## + ) +y + +64  + #__STRING +( +x +è#x + + ) + +66  + #__cÚ¡ + cÚ¡ + + ) + +67  + #__sigÃd + sigÃd + + ) + +68  + #__vÞ©že + vÞ©že + + ) + +69 #ià +defšed +( +__ýlu¥lus +è|| defšed( +__PCC__ +) + +70  + #__šlše + +šlše + + + ) + +72 #ià! +defšed +( +__GNUC__ +) + +73  + #__šlše + + + ) + +78  + #__P +( +´Ùos +è(è + + ) + +79  + #__CONCAT +( +x +, +y +èx + ) +y + +80  + #__STRING +( +x +è"x" + + ) + +82 #ià! +defšed +( +__GNUC__ +) + +83  + #__cÚ¡ + + + ) + +84  + #__šlše + + + ) + +85  + #__sigÃd + + + ) + +86  + #__vÞ©že + + + ) + +99 #ià! +__GNUC_PREREQ__ +(2, 5è&& ! +defšed +( +__PCC__ +) + +100  + #__©Œibu‹__ +( +x +è + + ) + +101 #ià +defšed +( +__GNUC__ +è&& !defšed( +__STRICT_ANSI__ +) + +102  + #__d—d + +__vÞ©že + + + ) + +103  + #__pu» + +__cÚ¡ + + + ) + +106  + #__d—d + + `__©Œibu‹__ +(( +__nÜ‘uº__ +)) + + ) + +107  + #__pu» + + `__©Œibu‹__ +(( +__cÚ¡__ +)) + + ) + +110 #ià +__GNUC_PREREQ__ +(2, 7) + +111  + #__unu£d + + `__©Œibu‹__ +(( +__unu£d__ +)) + + ) + +113  + #__unu£d + + + ) + +116 #ià +__GNUC_PREREQ__ +(3, 1) + +117  + #__u£d + + `__©Œibu‹__ +(( +__u£d__ +)) + + ) + +119  + #__u£d + +__unu£d + + + ) + +122 #ià +__GNUC_PREREQ__ +(3,4) + +123  + #__w¬n_unu£d_»suÉ + + `__©Œibu‹__ +(( +__w¬n_unu£d_»suÉ__ +)) + + ) + +125  + #__w¬n_unu£d_»suÉ + + + ) + +128 #ià +__GNUC_PREREQ__ +(3,3è&& ! +defšed +( +__þªg__ +) + +129  + #__bounded +( +¬gs +è + `__©Œibu‹__ + (( +__bounded__ +‡rg )) + + ) + +131  + #__bounded +( +¬gs +è + + ) + +140 #ià +__GNUC_PREREQ__ +(4, 1) + +141  + #__»tuºs_twiû + + `__©Œibu‹__ +(( +»tuºs_twiû +)) + + ) + +143  + #__»tuºs_twiû + + + ) + +153 #ifdeà +__GNUC__ + + +154 #ià +__GNUC_PREREQ__ +(4, 2) + +155  + #__Úly_šlše + +__šlše + + `__©Œibu‹__ +(( +__gnu_šlše__ +)) + + ) + +157  + #__Úly_šlše + +__šlše + + + ) + +160  + #__Úly_šlše +  +__šlše + + + ) + +191 #ià +__GNUC_PREREQ__ +(2, 96) + +192  + #__´ediù_Œue +( +exp +è + `__bužtš_ex³ù +((Óxpè!ð0), 1) + + ) + +193  + #__´ediù_çl£ +( +exp +è + `__bužtš_ex³ù +((Óxpè!ð0), 0) + + ) + +195  + #__´ediù_Œue +( +exp +è(Óxpè!ð0) + + ) + +196  + #__´ediù_çl£ +( +exp +è(Óxpè!ð0) + + ) + +200 #iâdeà +__d—d + + +201  + #__d—d + + + ) + +202  + #__pu» + + + ) + +217 #ià +__GNUC_PREREQ__ +(2, 7è|| +defšed +( +__PCC__ +) + +218  + #__·cked + + `__©Œibu‹__ +(( +__·cked__ +)) + + ) + +219  + #__®igÃd +( +x +è + `__©Œibu‹__ +(( + `__®igÃd__ +(x))) + + ) + +222 #ià! +__GNUC_PREREQ__ +(2, 8) + +223  + #__ex‹nsiÚ__ + + + ) + +226 #ià +__GNUC_PREREQ__ +(3, 0) + +227  + #__m®loc + + `__©Œibu‹__ +(( +__m®loc__ +)) + + ) + +229  + #__m®loc + + + ) + +232 #ià +defšed +( +__ýlu¥lus +) + +233  + #__BEGIN_EXTERN_C + "C" { + + ) + +234  + #__END_EXTERN_C + } + + ) + +236  + #__BEGIN_EXTERN_C + + + ) + +237  + #__END_EXTERN_C + + + ) + +240 #ià +__GNUC_PREREQ__ +(4, 0) + +241  + #__dso_public + + `__©Œibu‹__ +(( + `__visibž™y__ +("deçuÉ"))) + + ) + +242  + #__dso_hidd’ + + `__©Œibu‹__ +(( + `__visibž™y__ +("hidd’"))) + + ) + +243  + #__BEGIN_PUBLIC_DECLS + \ + +244 + `_P¿gma +("GCC visibž™y…ush(deçuÉ)"è +__BEGIN_EXTERN_C + + + ) + +245  + #__END_PUBLIC_DECLS + +__END_EXTERN_C + + `_P¿gma +("GCC visibž™y…Ý") + + ) + +246  + #__BEGIN_HIDDEN_DECLS + \ + +247 + `_P¿gma +("GCC visibž™y…ush(hidd’)"è +__BEGIN_EXTERN_C + + + ) + +248  + #__END_HIDDEN_DECLS + +__END_EXTERN_C + + `_P¿gma +("GCC visibž™y…Ý") + + ) + +250  + #__dso_public + + + ) + +251  + #__dso_hidd’ + + + ) + +252  + #__BEGIN_PUBLIC_DECLS + +__BEGIN_EXTERN_C + + + ) + +253  + #__END_PUBLIC_DECLS + +__END_EXTERN_C + + + ) + +254  + #__BEGIN_HIDDEN_DECLS + +__BEGIN_EXTERN_C + + + ) + +255  + #__END_HIDDEN_DECLS + +__END_EXTERN_C + + + ) + +258  + #__BEGIN_DECLS + +__BEGIN_EXTERN_C + + + ) + +259  + #__END_DECLS + +__END_EXTERN_C + + + ) + +294 #ifdeà +_XOPEN_SOURCE + + +295 #ià( +_XOPEN_SOURCE + - 0 >= 800) + +296  + #__XPG_VISIBLE + 800 + + ) + +297 #undeà +_POSIX_C_SOURCE + + +298  + #_POSIX_C_SOURCE + 202405L + + ) + +299 #–ià( +_XOPEN_SOURCE + - 0 >= 700) + +300  + #__XPG_VISIBLE + 700 + + ) + +301 #undeà +_POSIX_C_SOURCE + + +302  + #_POSIX_C_SOURCE + 200809L + + ) + +303 #–ià( +_XOPEN_SOURCE + - 0 >= 600) + +304  + #__XPG_VISIBLE + 600 + + ) + +305 #undeà +_POSIX_C_SOURCE + + +306  + #_POSIX_C_SOURCE + 200112L + + ) + +307 #–ià( +_XOPEN_SOURCE + - 0 >= 520) + +308  + #__XPG_VISIBLE + 520 + + ) + +309 #undeà +_POSIX_C_SOURCE + + +310  + #_POSIX_C_SOURCE + 199506L + + ) + +311 #–ià( +_XOPEN_SOURCE + - 0 >= 500) + +312  + #__XPG_VISIBLE + 500 + + ) + +313 #undeà +_POSIX_C_SOURCE + + +314  + #_POSIX_C_SOURCE + 199506L + + ) + +315 #–ià( +_XOPEN_SOURCE_EXTENDED + - 0 == 1) + +316  + #__XPG_VISIBLE + 420 + + ) + +317 #–ià( +_XOPEN_VERSION + - 0 >= 4) + +318  + #__XPG_VISIBLE + 400 + + ) + +320  + #__XPG_VISIBLE + 300 + + ) + +340 #ifdeà +_POSIX_C_SOURCE + + +341 #ià( +_POSIX_C_SOURCE + - 0 >= 202405) + +342  + #__POSIX_VISIBLE + 202405 + + ) + +343  + #__ISO_C_VISIBLE + 2017 + + ) + +344 #–ià( +_POSIX_C_SOURCE + - 0 >= 200809) + +345  + #__POSIX_VISIBLE + 200809 + + ) + +346  + #__ISO_C_VISIBLE + 1999 + + ) + +347 #–ià( +_POSIX_C_SOURCE + - 0 >= 200112) + +348  + #__POSIX_VISIBLE + 200112 + + ) + +349  + #__ISO_C_VISIBLE + 1999 + + ) + +350 #–ià( +_POSIX_C_SOURCE + - 0 >= 199506) + +351  + #__POSIX_VISIBLE + 199506 + + ) + +352  + #__ISO_C_VISIBLE + 1990 + + ) + +353 #–ià( +_POSIX_C_SOURCE + - 0 >= 199309) + +354  + #__POSIX_VISIBLE + 199309 + + ) + +355  + #__ISO_C_VISIBLE + 1990 + + ) + +356 #–ià( +_POSIX_C_SOURCE + - 0 >= 2) + +357  + #__POSIX_VISIBLE + 199209 + + ) + +358  + #__ISO_C_VISIBLE + 1990 + + ) + +360  + #__POSIX_VISIBLE + 199009 + + ) + +361  + #__ISO_C_VISIBLE + 1990 + + ) + +363 #–ià +defšed +( +_POSIX_SOURCE +) + +364  + #__POSIX_VISIBLE + 198808 + + ) + +365  + #__ISO_C_VISIBLE + 0 + + ) + +373 #ià +defšed +( +_ANSI_SOURCE +è&& !defšed( +__POSIX_VISIBLE +) && \ + +374 ! + $defšed +( +__XPG_VISIBLE +) + +375  + #__POSIX_VISIBLE + 0 + + ) + +376  + #__XPG_VISIBLE + 0 + + ) + +377  + #__ISO_C_VISIBLE + 1990 + + ) + +384 #ià + `defšed +( +_ISOC11_SOURCE +) || \ + +385 ( + `defšed +( +__STDC_VERSION__ +) && __STDC_VERSION__ >= 201112) || \ + +386 ( + `defšed +( +__ýlu¥lus +) && __cplusplus >= 201703) + +387 #undeà +__ISO_C_VISIBLE + + +388  + #__ISO_C_VISIBLE + 2011 + + ) + +389 #–ià + `defšed +( +_ISOC99_SOURCE +) || \ + +390 ( + `defšed +( +__STDC_VERSION__ +) && __STDC_VERSION__ >= 199901) || \ + +391 ( + `defšed +( +__ýlu¥lus +) && __cplusplus >= 201103) + +392 #undeà +__ISO_C_VISIBLE + + +393  + #__ISO_C_VISIBLE + 1999 + + ) + +401 #ià! + `defšed +( +_BSD_SOURCE +) && \ + +402 ( + `defšed +( +_ANSI_SOURCE +è|| defšed( +__XPG_VISIBLE +è|| + $defšed +( +__POSIX_VISIBLE +)) + +403  + #__BSD_VISIBLE + 0 + + ) + +409 #iâdeà +__XPG_VISIBLE + + +410  + #__XPG_VISIBLE + 800 + + ) + +412 #iâdeà +__POSIX_VISIBLE + + +413  + #__POSIX_VISIBLE + 202405 + + ) + +415 #iâdeà +__ISO_C_VISIBLE + + +416  + #__ISO_C_VISIBLE + 2017 + + ) + +418 #iâdeà +__BSD_VISIBLE + + +419  + #__BSD_VISIBLE + 1 + + ) + + @/usr/include/sys/errno.h + +40  + ~<sys/cdefs.h +> + +42  + #EPERM + 1 + + ) + +43  + #ENOENT + 2 + + ) + +44  + #ESRCH + 3 + + ) + +45  + #EINTR + 4 + + ) + +46  + #EIO + 5 + + ) + +47  + #ENXIO + 6 + + ) + +48  + #E2BIG + 7 + + ) + +49  + #ENOEXEC + 8 + + ) + +50  + #EBADF + 9 + + ) + +51  + #ECHILD + 10 + + ) + +52  + #EDEADLK + 11 + + ) + +54  + #ENOMEM + 12 + + ) + +55  + #EACCES + 13 + + ) + +56  + #EFAULT + 14 + + ) + +57 #ià +__BSD_VISIBLE + + +58  + #ENOTBLK + 15 + + ) + +60  + #EBUSY + 16 + + ) + +61  + #EEXIST + 17 + + ) + +62  + #EXDEV + 18 + + ) + +63  + #ENODEV + 19 + + ) + +64  + #ENOTDIR + 20 + + ) + +65  + #EISDIR + 21 + + ) + +66  + #EINVAL + 22 + + ) + +67  + #ENFILE + 23 + + ) + +68  + #EMFILE + 24 + + ) + +69  + #ENOTTY + 25 + + ) + +70  + #ETXTBSY + 26 + + ) + +71  + #EFBIG + 27 + + ) + +72  + #ENOSPC + 28 + + ) + +73  + #ESPIPE + 29 + + ) + +74  + #EROFS + 30 + + ) + +75  + #EMLINK + 31 + + ) + +76  + #EPIPE + 32 + + ) + +79  + #EDOM + 33 + + ) + +80  + #ERANGE + 34 + + ) + +83  + #EAGAIN + 35 + + ) + +84  + #EWOULDBLOCK + +EAGAIN + + + ) + +85  + #EINPROGRESS + 36 + + ) + +86  + #EALREADY + 37 + + ) + +89  + #ENOTSOCK + 38 + + ) + +90  + #EDESTADDRREQ + 39 + + ) + +91  + #EMSGSIZE + 40 + + ) + +92  + #EPROTOTYPE + 41 + + ) + +93  + #ENOPROTOOPT + 42 + + ) + +94  + #EPROTONOSUPPORT + 43 + + ) + +95 #ià +__BSD_VISIBLE + + +96  + #ESOCKTNOSUPPORT + 44 + + ) + +98  + #EOPNOTSUPP + 45 + + ) + +99 #ià +__BSD_VISIBLE + + +100  + #EPFNOSUPPORT + 46 + + ) + +102  + #EAFNOSUPPORT + 47 + + ) + +103  + #EADDRINUSE + 48 + + ) + +104  + #EADDRNOTAVAIL + 49 + + ) + +107  + #ENETDOWN + 50 + + ) + +108  + #ENETUNREACH + 51 + + ) + +109  + #ENETRESET + 52 + + ) + +110  + #ECONNABORTED + 53 + + ) + +111  + #ECONNRESET + 54 + + ) + +112  + #ENOBUFS + 55 + + ) + +113  + #EISCONN + 56 + + ) + +114  + #ENOTCONN + 57 + + ) + +115 #ià +__BSD_VISIBLE + + +116  + #ESHUTDOWN + 58 + + ) + +117  + #ETOOMANYREFS + 59 + + ) + +119  + #ETIMEDOUT + 60 + + ) + +120  + #ECONNREFUSED + 61 + + ) + +122  + #ELOOP + 62 + + ) + +123  + #ENAMETOOLONG + 63 + + ) + +126 #ià +__BSD_VISIBLE + + +127  + #EHOSTDOWN + 64 + + ) + +129  + #EHOSTUNREACH + 65 + + ) + +130  + #ENOTEMPTY + 66 + + ) + +133 #ià +__BSD_VISIBLE + + +134  + #EPROCLIM + 67 + + ) + +135  + #EUSERS + 68 + + ) + +137  + #EDQUOT + 69 + + ) + +140  + #ESTALE + 70 + + ) + +141 #ià +__BSD_VISIBLE + + +142  + #EREMOTE + 71 + + ) + +143  + #EBADRPC + 72 + + ) + +144  + #ERPCMISMATCH + 73 + + ) + +145  + #EPROGUNAVAIL + 74 + + ) + +146  + #EPROGMISMATCH + 75 + + ) + +147  + #EPROCUNAVAIL + 76 + + ) + +150  + #ENOLCK + 77 + + ) + +151  + #ENOSYS + 78 + + ) + +153 #ià +__BSD_VISIBLE + + +154  + #EFTYPE + 79 + + ) + +155  + #EAUTH + 80 + + ) + +156  + #ENEEDAUTH + 81 + + ) + +157  + #EIPSEC + 82 + + ) + +158  + #ENOATTR + 83 + + ) + +160  + #EILSEQ + 84 + + ) + +161 #ià +__BSD_VISIBLE + + +162  + #ENOMEDIUM + 85 + + ) + +163  + #EMEDIUMTYPE + 86 + + ) + +165  + #EOVERFLOW + 87 + + ) + +166  + #ECANCELED + 88 + + ) + +167  + #EIDRM + 89 + + ) + +168  + #ENOMSG + 90 + + ) + +169  + #ENOTSUP + 91 + + ) + +170  + #EBADMSG + 92 + + ) + +171  + #ENOTRECOVERABLE + 93 + + ) + +172  + #EOWNERDEAD + 94 + + ) + +173  + #EPROTO + 95 + + ) + +174 #ià +__BSD_VISIBLE + + +175  + #ELAST + 95 + + ) + +178 #ifdeà +_KERNEL + + +180  + #ERESTART + -1 + + ) + +181  + #EJUSTRETURN + -2 + + ) + + @/usr/include/sys/limits.h + +26 #iâdeà +_SYS_LIMITS_H_ + + +27  + #_SYS_LIMITS_H_ + + + ) + +29  + ~<sys/cdefs.h +> + +34  + ~<machše/lim™s.h +> + +36  + #CHAR_BIT + 8 + + ) + +38  + #SCHAR_MAX + 0x7à + + ) + +39  + #SCHAR_MIN + (-0x7f-1è + + ) + +41  + #UCHAR_MAX + 0xfà + + ) + +42 #ifdeà +__CHAR_UNSIGNED__ + + +43  + #CHAR_MIN + 0 + + ) + +44  + #CHAR_MAX + 0xfà + + ) + +46  + #CHAR_MAX + 0x7f + + ) + +47  + #CHAR_MIN + (-0x7f-1) + + ) + +50  + #MB_LEN_MAX + 4 + + ) + +52  + #USHRT_MAX + 0xfffà + + ) + +53  + #SHRT_MAX + 0x7ffà + + ) + +54  + #SHRT_MIN + (-0x7fff-1è + + ) + +56  + #UINT_MAX + 0xffffffffU + + ) + +57  + #INT_MAX + 0x7ffffffà + + ) + +58  + #INT_MIN + (-0x7fffffff-1è + + ) + +60 #ifdeà +__LP64__ + + +61  + #ULONG_MAX + 0xffffffffffffffffUL + + ) + +63  + #LONG_MAX + 0x7fffffffffffffffL + + ) + +65  + #LONG_MIN + (-0x7fffffffffffffffL-1) + + ) + +68  + #ULONG_MAX + 0xffffffffUL + + ) + +69  + #LONG_MAX + 0x7fffffffL + + ) + +70  + #LONG_MIN + (-0x7fffffffL-1) + + ) + +73 #ià +__BSD_VISIBLE + || +__ISO_C_VISIBLE + >= 1999 + +74  + #ULLONG_MAX + 0xffffffffffffffffULL + + ) + +76  + #LLONG_MAX + 0x7fffffffffffffffLL + + ) + +78  + #LLONG_MIN + (-0x7fffffffffffffffLL-1) + + ) + +82 #ià +__BSD_VISIBLE + + +83  + #UID_MAX + +UINT_MAX + + + ) + +84  + #GID_MAX + +UINT_MAX + + + ) + +87 #ià +__XPG_VISIBLE + || +__POSIX_VISIBLE + >= 200809 + +88 #ifdeà +__LP64__ + + +89  + #LONG_BIT + 64 + + ) + +91  + #LONG_BIT + 32 + + ) + +93  + #WORD_BIT + 32 + + ) + +96 #ià +__XPG_VISIBLE + < 600 + +97  + ~<machše/_æßt.h +> + +100 #iâdeà +FLT_DIG + + +101  + #FLT_DIG + +__FLT_DIG + + + ) + +103 #iâdeà +FLT_MAX + + +104  + #FLT_MAX + +__FLT_MAX + + + ) + +106 #iâdeà +DBL_DIG + + +107  + #DBL_DIG + +__DBL_DIG + + + ) + +109 #iâdeà +DBL_MAX + + +110  + #DBL_MAX + +__DBL_MAX + + + ) + +114 #ià +__XPG_VISIBLE + < 500 + +115 #iâdeà +FLT_MIN + + +116  + #FLT_MIN + +__FLT_MIN + + + ) + +118 #iâdeà +DBL_MIN + + +119  + #DBL_MIN + +__DBL_MIN + + + ) + + @/usr/include/sys/types.h + +40 #iâdeà +_SYS_TYPES_H_ + + +41  + #_SYS_TYPES_H_ + + + ) + +43  + ~<sys/cdefs.h +> + +44 #ià +__BSD_VISIBLE + + +45  + ~<sys/’dŸn.h +> + +47  + ~<sys/_’dŸn.h +> + +50 #ià +__BSD_VISIBLE + + +51  + tu_ch¬ +; + +52  + tu_shÜt +; + +53  + tu_št +; + +54  + tu_lÚg +; + +56  + tunch¬ +; + +57  + tushÜt +; + +58  + tušt +; + +59  + tulÚg +; + +61  +__ýuid_t + + týuid_t +; + +62  +__»gi¡”_t + + t»gi¡”_t +; + +69 #iâdef +__BIT_TYPES_DEFINED__ + + +70  + #__BIT_TYPES_DEFINED__ + + + ) + +73 #iâdef +_INT8_T_DEFINED_ + + +74  + #_INT8_T_DEFINED_ + + + ) + +75  +__št8_t + + tšt8_t +; + +78 #iâdef +_UINT8_T_DEFINED_ + + +79  + #_UINT8_T_DEFINED_ + + + ) + +80  +__ušt8_t + + tušt8_t +; + +83 #iâdef +_INT16_T_DEFINED_ + + +84  + #_INT16_T_DEFINED_ + + + ) + +85  +__št16_t + + tšt16_t +; + +88 #iâdef +_UINT16_T_DEFINED_ + + +89  + #_UINT16_T_DEFINED_ + + + ) + +90  +__ušt16_t + + tušt16_t +; + +93 #iâdef +_INT32_T_DEFINED_ + + +94  + #_INT32_T_DEFINED_ + + + ) + +95  +__št32_t + + tšt32_t +; + +98 #iâdef +_UINT32_T_DEFINED_ + + +99  + #_UINT32_T_DEFINED_ + + + ) + +100  +__ušt32_t + + tušt32_t +; + +103 #iâdef +_INT64_T_DEFINED_ + + +104  + #_INT64_T_DEFINED_ + + + ) + +105  +__št64_t + + tšt64_t +; + +108 #iâdef +_UINT64_T_DEFINED_ + + +109  + #_UINT64_T_DEFINED_ + + + ) + +110  +__ušt64_t + + tušt64_t +; + +114  +__ušt8_t + + tu_št8_t +; + +115  +__ušt16_t + + tu_št16_t +; + +116  +__ušt32_t + + tu_št32_t +; + +117  +__ušt64_t + + tu_št64_t +; + +120  +__št64_t + + tquad_t +; + +121  +__ušt64_t + + tu_quad_t +; + +123 #ià +__BSD_VISIBLE + + +125  +__vaddr_t + + tvaddr_t +; + +126  +__·ddr_t + + t·ddr_t +; + +127  +__vsize_t + + tvsize_t +; + +128  +__psize_t + + tpsize_t +; + +132  +__blkút_t + + tblkút_t +; + +133  +__blksize_t + + tblksize_t +; + +134 * + tÿddr_t +; + +135  +__št32_t + + tdaddr32_t +; + +136  +__št64_t + + tdaddr_t +; + +137  +__dev_t + + tdev_t +; + +138  +__fix±_t + + tfix±_t +; + +139  +__gid_t + + tgid_t +; + +140  +__id_t + + tid_t +; + +141  +__šo_t + + tšo_t +; + +142  +__key_t + + tkey_t +; + +143  +__mode_t + + tmode_t +; + +144  +__Æšk_t + + tÆšk_t +; + +145  +__¾im_t + + t¾im_t +; + +146  +__£gsz_t + + t£gsz_t +; + +147  +__uid_t + + tuid_t +; + +148  +__u£cÚds_t + + tu£cÚds_t +; + +149  +__su£cÚds_t + + tsu£cÚds_t +; + +150  +__fsblkút_t + + tfsblkút_t +; + +151  +__fsfžút_t + + tfsfžút_t +; + +156 #iâdef +_CLOCK_T_DEFINED_ + + +157  + #_CLOCK_T_DEFINED_ + + + ) + +158  +__þock_t + + tþock_t +; + +161 #iâdef +_CLOCKID_T_DEFINED_ + + +162  + #_CLOCKID_T_DEFINED_ + + + ) + +163  +__þockid_t + + tþockid_t +; + +166 #iâdef +_PID_T_DEFINED_ + + +167  + #_PID_T_DEFINED_ + + + ) + +168  +__pid_t + + tpid_t +; + +171 #iâdef +_SIZE_T_DEFINED_ + + +172  + #_SIZE_T_DEFINED_ + + + ) + +173  +__size_t + + tsize_t +; + +176 #iâdef +_SSIZE_T_DEFINED_ + + +177  + #_SSIZE_T_DEFINED_ + + + ) + +178  +__ssize_t + + tssize_t +; + +181 #iâdef +_TIME_T_DEFINED_ + + +182  + #_TIME_T_DEFINED_ + + + ) + +183  +__time_t + + ttime_t +; + +186 #iâdef +_TIMER_T_DEFINED_ + + +187  + #_TIMER_T_DEFINED_ + + + ) + +188  +__tim”_t + + ttim”_t +; + +191 #iâdef +_OFF_T_DEFINED_ + + +192  + #_OFF_T_DEFINED_ + + + ) + +193  +__off_t + + toff_t +; + +201 #ià +__BSD_VISIBLE + && ! +defšed +( +_KERNEL +) + +202 +__BEGIN_DECLS + + +203 +off_t + +l£ek +(, off_t, ); + +204  +árunÿ‹ +(, +off_t +); + +205  +Œunÿ‹ +(cÚ¡ *, +off_t +); + +206 + g__END_DECLS + + +209 #ià +__BSD_VISIBLE + + +211  + #majÜ +( +x +è((()(xè>> 8è& 0xff) + + ) + +212  + #mšÜ +( +x +è(()((xè& 0xffè| (((xè& 0xffff0000è>> 8)) + + ) + +213  + #makedev +( +x +, +y +è(( +dev_t +)((((xè& 0xffè<< 8è| ((yè& 0xffè| (((yè& 0xffff00è<< 8))) + + ) + +216 #ià +defšed +( +__STDC__ +è&& defšed( +_KERNEL +) + +222  + g´oc +; + +223  + gpg½ +; + +224  + guüed +; + +225  + gru§ge +; + +226  + gfže +; + +227  + gbuf +; + +228  + g‰y +; + +229  + guio +; + +232 #ifdeà +_KERNEL + + +233 #ià +defšed +( +__GNUC__ +) || \ + +234 ( +defšed +( +__STDC_VERSION__ +è&& + g__STDC_VERSION__ + >= 199901) + +236  + #çl£ + 0 + + ) + +237  + #Œue + 1 + + ) + +242 +çl£ + = 0, + +243 + mŒue + = 1 + +244 } + t_BoÞ +; + +247  + #çl£ + +çl£ + + + ) + +248  + #Œue + +Œue + + + ) + +253  + #boÞ + +_BoÞ + + + ) + +256  + #__boÞ_Œue_çl£_¬e_defšed + 1 + + ) + + @/usr/include/sys/unistd.h + +35 #iâdeà +_SYS_UNISTD_H_ + + +36  + #_SYS_UNISTD_H_ + + + ) + +38  + ~<sys/cdefs.h +> + +40  + #_POSIX_VDISABLE + (0377) + + ) + +41  + #_POSIX_ASYNC_IO + (-1) + + ) + +42  + #_POSIX_PRIO_IO + (-1) + + ) + +43  + #_POSIX_SYNC_IO + (-1) + + ) + +46  + #_POSIX_VERSION + 200809L + + ) + +49  + #F_OK + 0 + + ) + +50  + #X_OK + 0x01 + + ) + +51  + #W_OK + 0x02 + + ) + +52  + #R_OK + 0x04 + + ) + +55  + #SEEK_SET + 0 + + ) + +56  + #SEEK_CUR + 1 + + ) + +57  + #SEEK_END + 2 + + ) + +59 #ià +__BSD_VISIBLE + + +61  + #L_SET + +SEEK_SET + + + ) + +62  + #L_INCR + +SEEK_CUR + + + ) + +63  + #L_XTND + +SEEK_END + + + ) + +66  + s__tfÜk + { + +67 * + mtf_tcb +; + +68 +pid_t + * + mtf_tid +; + +69 * + mtf_¡ack +; + +73  + s__kbšd + { + +74 * + mkb_addr +; + +75 +size_t + + mkb_size +; + +77  + #KBIND_BLOCK_MAX + 2 + + ) + +78  + #KBIND_DATA_MAX + 24 + + ) + +84  + #_PC_LINK_MAX + 1 + + ) + +85  + #_PC_MAX_CANON + 2 + + ) + +86  + #_PC_MAX_INPUT + 3 + + ) + +87  + #_PC_NAME_MAX + 4 + + ) + +88  + #_PC_PATH_MAX + 5 + + ) + +89  + #_PC_PIPE_BUF + 6 + + ) + +90  + #_PC_CHOWN_RESTRICTED + 7 + + ) + +91  + #_PC_NO_TRUNC + 8 + + ) + +92  + #_PC_VDISABLE + 9 + + ) + +93  + #_PC_2_SYMLINKS + 10 + + ) + +94  + #_PC_ALLOC_SIZE_MIN + 11 + + ) + +95  + #_PC_ASYNC_IO + 12 + + ) + +96  + #_PC_FILESIZEBITS + 13 + + ) + +97  + #_PC_PRIO_IO + 14 + + ) + +98  + #_PC_REC_INCR_XFER_SIZE + 15 + + ) + +99  + #_PC_REC_MAX_XFER_SIZE + 16 + + ) + +100  + #_PC_REC_MIN_XFER_SIZE + 17 + + ) + +101  + #_PC_REC_XFER_ALIGN + 18 + + ) + +102  + #_PC_SYMLINK_MAX + 19 + + ) + +103  + #_PC_SYNC_IO + 20 + + ) + +104  + #_PC_TIMESTAMP_RESOLUTION + 21 + + ) + + @/usr/include/machine/_float.h + +32 #iâdeà +_MACHINE__FLOAT_H_ + + +33  + #_MACHINE__FLOAT_H_ + + + ) + +35  + #__FLT_RADIX + 2 + + ) + +36  + #__FLT_ROUNDS + + `__æt_rounds +() + + ) + +37  + #__FLT_EVAL_METHOD + 0 + + ) + +39  + #__FLT_MANT_DIG + 24 + + ) + +40  + #__FLT_EPSILON + 1.19209290E-07F + + ) + +41  + #__FLT_DIG + 6 + + ) + +42  + #__FLT_MIN_EXP + (-125è + + ) + +43  + #__FLT_MIN + 1.17549435E-38F + + ) + +44  + #__FLT_MIN_10_EXP + (-37è + + ) + +45  + #__FLT_MAX_EXP + 128 + + ) + +46  + #__FLT_MAX + 3.40282347E+38F + + ) + +47  + #__FLT_MAX_10_EXP + 38 + + ) + +49  + #__DBL_MANT_DIG + 53 + + ) + +50  + #__DBL_EPSILON + 2.2204460492503131E-16 + + ) + +51  + #__DBL_DIG + 15 + + ) + +52  + #__DBL_MIN_EXP + (-1021) + + ) + +53  + #__DBL_MIN + 2.2250738585072014E-308 + + ) + +54  + #__DBL_MIN_10_EXP + (-307) + + ) + +55  + #__DBL_MAX_EXP + 1024 + + ) + +56  + #__DBL_MAX + 1.7976931348623157E+308 + + ) + +57  + #__DBL_MAX_10_EXP + 308 + + ) + +59  + #__LDBL_MANT_DIG + 64 + + ) + +60  + #__LDBL_EPSILON + 1.08420217248550443401e-19L + + ) + +61  + #__LDBL_DIG + 18 + + ) + +62  + #__LDBL_MIN_EXP + (-16381) + + ) + +63  + #__LDBL_MIN + 3.36210314311209350626e-4932L + + ) + +64  + #__LDBL_MIN_10_EXP + (-4931) + + ) + +65  + #__LDBL_MAX_EXP + 16384 + + ) + +66  + #__LDBL_MAX + 1.18973149535723176502e+4932L + + ) + +67  + #__LDBL_MAX_10_EXP + 4932 + + ) + +69  + #__DECIMAL_DIG + 21 + + ) + + @/usr/include/machine/cdefs.h + +8 #iâdef +_MACHINE_CDEFS_H_ + + +9  + #_MACHINE_CDEFS_H_ + + + ) + +11  + #__¡rÚg_®Ÿs +( +®Ÿs +, +sym +) \ + +12 + `__asm__ +(".glob® " + `__STRING +( +®Ÿs +) " ; " __STRING(alias) \ + +13 " = " + `__STRING +( +sym +)) + + ) + +14  + #__w—k_®Ÿs +( +®Ÿs +, +sym +) \ + +15 + `__asm__ +(".w—k " + `__STRING +( +®Ÿs +) " ; " __STRING(alias) \ + +16 " = " + `__STRING +( +sym +)) + + ) + +17  + #__w¬n_»ã»nûs +( +sym +, +msg +) \ + +18 + `__asm__ +(".£ùiÚ .gnu.w¬nšg." + `__STRING +( +sym +) \ + +19 " ; .asci˜\"" +msg + "\" ; .‹xt") + + ) + + @/usr/include/machine/limits.h + +34 #iâdef +_MACHINE_LIMITS_H_ + + +35  + #_MACHINE_LIMITS_H_ + + + ) + +37  + ~<sys/cdefs.h +> + +39 #ià +__POSIX_VISIBLE + || +__XPG_VISIBLE + + +40  + #SSIZE_MAX + +LONG_MAX + + + ) + +43 #ià +__BSD_VISIBLE + + +44  + #SIZE_T_MAX + +ULONG_MAX + + + ) + +46  + #UQUAD_MAX + 0xffffffffffffffffULL + + ) + +47  + #QUAD_MAX + 0x7fffffffffffffffLL + + ) + +48  + #QUAD_MIN + (-0x7fffffffffffffffLL-1è + + ) + + @/usr/include/sys/_endian.h + +33 #iâdeà +_SYS__ENDIAN_H_ + + +34  + #_SYS__ENDIAN_H_ + + + ) + +36  + ~<sys/_ty³s.h +> + +38  + #__FROM_SYS__ENDIAN + + + ) + +39  + ~<machše/’dŸn.h +> + +40 #undeà +__FROM_SYS__ENDIAN + + +42  + #_LITTLE_ENDIAN + 1234 + + ) + +43  + #_BIG_ENDIAN + 4321 + + ) + +44  + #_PDP_ENDIAN + 3412 + + ) + +48  + #__sw­16g’ +( +x +) \ + +49 ( +__ušt16_t +)(((__ušt16_t)( +x +è& 0xffUè<< 8 | ((__ušt16_t)(xè& 0xff00Uè>> 8) + + ) + +51  + #__sw­32g’ +( +x +) \ + +52 ( +__ušt32_t +)(((__ušt32_t)( +x +) & 0xff) << 24 | \ + +53 (( +__ušt32_t +)( +x +) & 0xff00) << 8 | ((__uint32_t)(x) & 0xff0000) >> 8 |\ + +54 (( +__ušt32_t +)( +x +è& 0xff000000è>> 24) + + ) + +56  + #__sw­64g’ +( +x +) \ + +57 ( +__ušt64_t +)((((__ušt64_t)( +x +) & 0xff) << 56) | \ + +58 (( +__ušt64_t +)( +x +) & 0xff00ULL) << 40 | \ + +59 (( +__ušt64_t +)( +x +) & 0xff0000ULL) << 24 | \ + +60 (( +__ušt64_t +)( +x +) & 0xff000000ULL) << 8 | \ + +61 (( +__ušt64_t +)( +x +) & 0xff00000000ULL) >> 8 | \ + +62 (( +__ušt64_t +)( +x +) & 0xff0000000000ULL) >> 24 | \ + +63 (( +__ušt64_t +)( +x +) & 0xff000000000000ULL) >> 40 | \ + +64 (( +__ušt64_t +)( +x +è& 0xff00000000000000ULLè>> 56) + + ) + +66 #iâdeà +__HAVE_MD_SWAP + + +67  +__šlše + +__ušt16_t + + +68 + $__sw­16md +( +__ušt16_t + +x +) + +70  ( + `__sw­16g’ +( +x +)); + +71 + } +} + +73  +__šlše + +__ušt32_t + + +74 + $__sw­32md +( +__ušt32_t + +x +) + +76  ( + `__sw­32g’ +( +x +)); + +77 + } +} + +79  +__šlše + +__ušt64_t + + +80 + $__sw­64md +( +__ušt64_t + +x +) + +82  ( + `__sw­64g’ +( +x +)); + +83 + } +} + +86  + #__sw­16 +( +x +) \ + +87 ( +__ušt16_t +)( + `__bužtš_cÚ¡ªt_p +( +x +è? + `__sw­16g’ +(xè: + `__sw­16md +(x)) + + ) + +88  + #__sw­32 +( +x +) \ + +89 ( +__ušt32_t +)( + `__bužtš_cÚ¡ªt_p +( +x +è? + `__sw­32g’ +(xè: + `__sw­32md +(x)) + + ) + +90  + #__sw­64 +( +x +) \ + +91 ( +__ušt64_t +)( + `__bužtš_cÚ¡ªt_p +( +x +è? + `__sw­64g’ +(xè: + `__sw­64md +(x)) + + ) + +93 #ià +_BYTE_ORDER + =ð +_LITTLE_ENDIAN + + +95  + #_QUAD_HIGHWORD + 1 + + ) + +96  + #_QUAD_LOWWORD + 0 + + ) + +98  + #__htobe16 + +__sw­16 + + + ) + +99  + #__htobe32 + +__sw­32 + + + ) + +100  + #__htobe64 + +__sw­64 + + + ) + +101  + #__htÞe16 +( +x +è(( +__ušt16_t +)(x)) + + ) + +102  + #__htÞe32 +( +x +è(( +__ušt32_t +)(x)) + + ) + +103  + #__htÞe64 +( +x +è(( +__ušt64_t +)(x)) + + ) + +105 #ifdeà +_KERNEL + + +106 #ifdeà +__HAVE_MD_SWAPIO + + +108  + #__bemtoh16 +( +_x +è + `__msw­16 +(_x) + + ) + +109  + #__bemtoh32 +( +_x +è + `__msw­32 +(_x) + + ) + +110  + #__bemtoh64 +( +_x +è + `__msw­64 +(_x) + + ) + +112  + #__htobem16 +( +_x +, +_v +è + `__sw­m16 +((_x), (_v)) + + ) + +113  + #__htobem32 +( +_x +, +_v +è + `__sw­m32 +((_x), (_v)) + + ) + +114  + #__htobem64 +( +_x +, +_v +è + `__sw­m64 +((_x), (_v)) + + ) + +120 #ià +_BYTE_ORDER + =ð +_BIG_ENDIAN + + +122  + #_QUAD_HIGHWORD + 0 + + ) + +123  + #_QUAD_LOWWORD + 1 + + ) + +125  + #__htobe16 +( +x +è(( +__ušt16_t +)(x)) + + ) + +126  + #__htobe32 +( +x +è(( +__ušt32_t +)(x)) + + ) + +127  + #__htobe64 +( +x +è(( +__ušt64_t +)(x)) + + ) + +128  + #__htÞe16 + +__sw­16 + + + ) + +129  + #__htÞe32 + +__sw­32 + + + ) + +130  + #__htÞe64 + +__sw­64 + + + ) + +132 #ifdeà +_KERNEL + + +133 #ifdeà +__HAVE_MD_SWAPIO + + +135  + #__Ëmtoh16 +( +_x +è + `__msw­16 +(_x) + + ) + +136  + #__Ëmtoh32 +( +_x +è + `__msw­32 +(_x) + + ) + +137  + #__Ëmtoh64 +( +_x +è + `__msw­64 +(_x) + + ) + +139  + #__htÞem16 +( +_x +, +_v +è + `__sw­m16 +((_x), (_v)) + + ) + +140  + #__htÞem32 +( +_x +, +_v +è + `__sw­m32 +((_x), (_v)) + + ) + +141  + #__htÞem64 +( +_x +, +_v +è + `__sw­m64 +((_x), (_v)) + + ) + +148 #ifdeà +_KERNEL + + +154 #iâdeà +__bemtoh16 + + +155  + #__bemtoh16 +( +_x +è + `__htobe16 +(*( +__ušt16_t + *)(_x)) + + ) + +156  + #__bemtoh32 +( +_x +è + `__htobe32 +(*( +__ušt32_t + *)(_x)) + + ) + +157  + #__bemtoh64 +( +_x +è + `__htobe64 +(*( +__ušt64_t + *)(_x)) + + ) + +160 #iâdeà +__htobem16 + + +161  + #__htobem16 +( +_x +, +_v +è(*( +__ušt16_t + *)(_xèð + `__htobe16 +(_v)) + + ) + +162  + #__htobem32 +( +_x +, +_v +è(*( +__ušt32_t + *)(_xèð + `__htobe32 +(_v)) + + ) + +163  + #__htobem64 +( +_x +, +_v +è(*( +__ušt64_t + *)(_xèð + `__htobe64 +(_v)) + + ) + +166 #iâdeà +__Ëmtoh16 + + +167  + #__Ëmtoh16 +( +_x +è + `__htÞe16 +(*( +__ušt16_t + *)(_x)) + + ) + +168  + #__Ëmtoh32 +( +_x +è + `__htÞe32 +(*( +__ušt32_t + *)(_x)) + + ) + +169  + #__Ëmtoh64 +( +_x +è + `__htÞe64 +(*( +__ušt64_t + *)(_x)) + + ) + +172 #iâdeà +__htÞem16 + + +173  + #__htÞem16 +( +_x +, +_v +è(*( +__ušt16_t + *)(_xèð + `__htÞe16 +(_v)) + + ) + +174  + #__htÞem32 +( +_x +, +_v +è(*( +__ušt32_t + *)(_xèð + `__htÞe32 +(_v)) + + ) + +175  + #__htÞem64 +( +_x +, +_v +è(*( +__ušt64_t + *)(_xèð + `__htÞe64 +(_v)) + + ) + + @/usr/include/sys/endian.h + +37 #iâdeà +_SYS_ENDIAN_H_ + + +38  + #_SYS_ENDIAN_H_ + + + ) + +40  + ~<sys/cdefs.h +> + +41  + ~<sys/_’dŸn.h +> + +44  + #LITTLE_ENDIAN + +_LITTLE_ENDIAN + + + ) + +45  + #BIG_ENDIAN + +_BIG_ENDIAN + + + ) + +46  + #PDP_ENDIAN + +_PDP_ENDIAN + + + ) + +47  + #BYTE_ORDER + +_BYTE_ORDER + + + ) + +53  + #htobe16 +( +x +è + `__htobe16 +(x) + + ) + +54  + #htobe32 +( +x +è + `__htobe32 +(x) + + ) + +55  + #htobe64 +( +x +è + `__htobe64 +(x) + + ) + +56  + #htÞe16 +( +x +è + `__htÞe16 +(x) + + ) + +57  + #htÞe32 +( +x +è + `__htÞe32 +(x) + + ) + +58  + #htÞe64 +( +x +è + `__htÞe64 +(x) + + ) + +61  + #be16toh +( +x +è + `__htobe16 +(x) + + ) + +62  + #be32toh +( +x +è + `__htobe32 +(x) + + ) + +63  + #be64toh +( +x +è + `__htobe64 +(x) + + ) + +64  + #Ë16toh +( +x +è + `__htÞe16 +(x) + + ) + +65  + #Ë32toh +( +x +è + `__htÞe32 +(x) + + ) + +66  + #Ë64toh +( +x +è + `__htÞe64 +(x) + + ) + +69 #ià +__BSD_VISIBLE + + +70  + #sw­16 +( +x +è + `__sw­16 +(x) + + ) + +71  + #sw­32 +( +x +è + `__sw­32 +(x) + + ) + +72  + #sw­64 +( +x +è + `__sw­64 +(x) + + ) + +74  + #sw­16_muÉi +( +v +, +n +) do { \ + +75 +__size_t + +__sw­16_muÉi_n + = ( +n +); \ + +76 +__ušt16_t + * +__sw­16_muÉi_v + = ( +v +); \ + +78  +__sw­16_muÉi_n +) { \ + +79 * +__sw­16_muÉi_v + = + `sw­16 +(*__swap16_multi_v); \ + +80 +__sw­16_muÉi_v +++; \ + +81 +__sw­16_muÉi_n +--; \ + +83 } 0) + + ) + +86  + #b‘oh16 +( +x +è + `__htobe16 +(x) + + ) + +87  + #b‘oh32 +( +x +è + `__htobe32 +(x) + + ) + +88  + #b‘oh64 +( +x +è + `__htobe64 +(x) + + ) + +89  + #Ëtoh16 +( +x +è + `__htÞe16 +(x) + + ) + +90  + #Ëtoh32 +( +x +è + `__htÞe32 +(x) + + ) + +91  + #Ëtoh64 +( +x +è + `__htÞe64 +(x) + + ) + +93 #iâdeà +htÚs + + +95  + #htÚs +( +x +è + `__htobe16 +(x) + + ) + +96  + #htÚl +( +x +è + `__htobe32 +(x) + + ) + +97  + #Áohs +( +x +è + `__htobe16 +(x) + + ) + +98  + #Áohl +( +x +è + `__htobe32 +(x) + + ) + +102  + #NTOHL +( +x +è(xèð + `Áohl +(( +u_št32_t +)(x)) + + ) + +103  + #NTOHS +( +x +è(xèð + `Áohs +(( +u_št16_t +)(x)) + + ) + +104  + #HTONL +( +x +è(xèð + `htÚl +(( +u_št32_t +)(x)) + + ) + +105  + #HTONS +( +x +è(xèð + `htÚs +(( +u_št16_t +)(x)) + + ) + +108 #ifdeà +_KERNEL + + +110  + #bemtoh16 + +__bemtoh16 + + + ) + +111  + #bemtoh32 + +__bemtoh32 + + + ) + +112  + #bemtoh64 + +__bemtoh64 + + + ) + +113  + #htobem16 + +__htobem16 + + + ) + +114  + #htobem32 + +__htobem32 + + + ) + +115  + #htobem64 + +__htobem64 + + + ) + +116  + #Ëmtoh16 + +__Ëmtoh16 + + + ) + +117  + #Ëmtoh32 + +__Ëmtoh32 + + + ) + +118  + #Ëmtoh64 + +__Ëmtoh64 + + + ) + +119  + #htÞem16 + +__htÞem16 + + + ) + +120  + #htÞem32 + +__htÞem32 + + + ) + +121  + #htÞem64 + +__htÞem64 + + + ) + + @/usr/include/machine/endian.h + +27 #iâdeà +_MACHINE_ENDIAN_H_ + + +28  + #_MACHINE_ENDIAN_H_ + + + ) + +30  + #_BYTE_ORDER + +_LITTLE_ENDIAN + + + ) + +32 #iâdeà +__FROM_SYS__ENDIAN + + +33  + ~<sys/’dŸn.h +> + + @ +1 +. +1 +/usr/include +25 +594 +linije.c +version.h +/usr/include/assert.h +/usr/include/errno.h +/usr/include/math.h +/usr/include/stdarg.h +/usr/include/stdio.h +/usr/include/stdlib.h +/usr/include/time.h +/usr/include/unistd.h +/usr/include/machine/_types.h +/usr/include/sys/_null.h +/usr/include/sys/_time.h +/usr/include/sys/_types.h +/usr/include/sys/cdefs.h +/usr/include/sys/errno.h +/usr/include/sys/limits.h +/usr/include/sys/types.h +/usr/include/sys/unistd.h +/usr/include/machine/_float.h +/usr/include/machine/cdefs.h +/usr/include/machine/limits.h +/usr/include/sys/_endian.h +/usr/include/sys/endian.h +/usr/include/machine/endian.h diff --git a/date b/date @@ -0,0 +1 @@ +July 30, 2025 diff --git a/description b/description @@ -0,0 +1 @@ +Клон игре Color lines diff --git a/lib/makedate b/lib/makedate @@ -0,0 +1,61 @@ +#!/bin/sh -x +# vim: set ft=bash: +FALLBACKDATE=${FALLBACKDATE:-unknown} +LC_ALL=C +export LC_ALL + +if [ -d .got ] && command -v got >/dev/null 2>&1; then + got log | + awk ' + /^date: / { + sub(/^date: /,"",$0) + # Convert to proper form for `mandoc -Tlint` + month_names["Jan"] = "January" + month_names["Feb"] = "February" + month_names["Mar"] = "March" + month_names["Apr"] = "April" + month_names["May"] = "May" + month_names["Jun"] = "June" + month_names["Jul"] = "July" + month_names["Aug"] = "August" + month_names["Sep"] = "September" + month_names["Oct"] = "October" + month_names["Nov"] = "November" + month_names["Dec"] = "December" + print month_names[$2] " " $3 ", " $5 + exit + }' >date.new +elif [ -d .git ] && command -v git >/dev/null 2>&1; then + user=$(getent passwd "$(unalias ls >/dev/null 2>&1 || true; \ + command ls -lnd . | awk '{print $3}')" | awk -F: '{print $1}') + if [ -z "$user" ]; then + printf "$0: error: Cannot determine owner of %s" "$(pwd)" >&2 + exit 1 + fi + e_user=$(id -un) + if [ "$e_user" = "$user" ]; then + git log --format=format:%cd \ + --date=format:"%B %d, %Y" -1 @ >date.new + else + su "${user}" -c 'env LC_ALL=C git log --format=format:%cd \ + --date=format:"%B %d, %Y" -1 @' >date.new + fi + echo >>date.new +else + printf "%s\n" "$FALLBACKDATE" >date.new +fi + +if [ -f date ]; then + if diff date date.new >/dev/null; then + rm date.new + else + mv date.new date + touch .rebuild + fi +else + mv date.new date + touch .rebuild +fi +if [ "$1" = "-l" ]; then + printf "DATE=\"%s\"\n" "$(cat date)" +fi diff --git a/lib/makeversion b/lib/makeversion @@ -0,0 +1,66 @@ +#!/bin/sh -x +# vim: set ft=bash: +FALLBACKVER=${FALLBACKVER:-unknown} + +if [ -d .got ] && command -v got >/dev/null 2>&1; then + lastcommit=$(got log | + awk '/^commit/ {print substr($2,1,7); exit}') + got tag -l | + awk -v lastcommit="$lastcommit" ' + /^object: commit/ { + if (!lasttagcom) + { + lasttagcom = substr($3,1,7) + } + next + } + /^tag/ { + if (!ver) + { + sub(/^v/,"",$2) + ver = $2 + } + next + } + END { + printf "%s", ver + if (lastcommit != lasttagcom) + { + printf "-g%s", lastcommit + } + printf "\n" + }' >version.new +elif [ -d .git ] && command -v git >/dev/null 2>&1; then + LC_ALL=C + export LC_ALL + user=$(getent passwd "$(unalias ls >/dev/null 2>&1 || true; \ + command ls -lnd . | awk '{print $3}')" | awk -F: '{print $1}') + if [ -z "$user" ]; then + printf "$0: error: Cannot determine owner of %s" "$(pwd)" >&2 + exit 1 + fi + e_user=$(id -un) + if [ "$e_user" = "$user" ]; then + git describe 2>/dev/null | sed 's/^v//' >version.new + else + su "$user" -c 'git describe' 2>/dev/null | + sed 's/^v//' >version.new + fi +else + printf "%s\n" "$FALLBACKVER" >version.new +fi + +if [ -f version ]; then + if diff version version.new >/dev/null; then + rm version.new + else + mv version.new version + touch .rebuild + fi +else + mv version.new version + touch .rebuild +fi +if [ "$1" = "-l" ]; then + printf "VERSION=\"%s\"\n" "$(cat version)" +fi diff --git a/lib/mkpack b/lib/mkpack @@ -0,0 +1,20 @@ +#!/bin/sh -x +# vim: set ft=bash: +DISTDIR=$(grep '^PROG[[:space:]]\{1,\}=' config.mk | + sed -E 's,.*=[[:space:]]+([[:alpha:]]+),\1,')-$(cat version) +mkdir "$DISTDIR" +if [ -d .got ] && command -v got >/dev/null 2>&1; then + files=$(got tree | sed -e 's,[@/*$]$,,g') +elif [ -d .git ] && command -v git >/dev/null 2>&1; then + files=$(git ls-files) +else + printf "Either got or git are required for 'make pack'\n" >&2 + exit 1 +fi +for f in $files; do + d="$DISTDIR"/"$(dirname "$f")" + mkdir -p "$d" + cp "$f" "$d"/ +done +tar -cf - "$DISTDIR" | xz -9v - > "$DISTDIR".tar.xz +rm -fr "$DISTDIR" diff --git a/lib/replacepat b/lib/replacepat @@ -0,0 +1,10 @@ +#!/bin/sh +# vim: set ft=bash: +infile="$1" +outfile="$2" +DATE=$(cat date 2>/dev/null) +VERSION=$(cat version 2>/dev/null) + +sed -e 's|%VERSION%|'"$VERSION"'|g' -e 's|%DATE%|'"$DATE"'|g' \ + -e 's|%DATADIR%|'"$DATADIR"'|g' "$infile" \ + > "$outfile" diff --git a/linije.c b/linije.c @@ -0,0 +1,1569 @@ +/* This program is licensed under the terms of GNU GPL v3 or (at your option) + * any later version. Copyright (C) 2025 Страхиња Радић. + * See the file LICENSE for exact copyright and license details. */ + +#include <SDL3/SDL.h> +#include <SDL3_image/SDL_image.h> +#include <assert.h> +#include <errno.h> +#include <math.h> +#include <stdarg.h> +#include <stdio.h> +#include <stdlib.h> +#include <time.h> +#include <unistd.h> + +#include "local.h" +#include "version.h" + +/* clang-format off */ +#define ANIM_SPEED 100 /* how long does it take for the animation to go + * from start to finish (ms) */ +/* clang-format on */ +#define FPS 60 +#define ANIM_STEPS (ANIM_SPEED * FPS / 1000) + +#define BUFSIZE 4096 +#define CELL_SIZE 20 +#define DEFAULT_WIDTH 1280 +#define DEFAULT_HEIGHT 720 +#define HELP_DIALOG_WIDTH 900 +#define HELP_DIALOG_HEIGHT 450 +#define GRID_WIDTH 15 +#define GRID_HEIGHT 15 +#define LOCATION_STACK_MAX (GRID_WIDTH * GRID_HEIGHT) +#define MIN_POP_LEN 5 +/* clang-format off */ +#define POP_STRING_CELL_VALUE 100 /* Multiplied by # of balls in a string and + * added to score when popping a string */ +/* clang-format on */ +#define PRINT_BUFSIZE 4096 +#define PROGNAME "linije" +#define TER12_WIDTH 6 +#define TER12_HEIGHT 12 +#define WIN_TITLE "Linije" + +#define MIN(a, b) (((a) < (b)) ? (a) : (b)) +#define MAX(a, b) (((a) > (b)) ? (a) : (b)) +#define INDEX(x, y) ((y) * GRID_WIDTH + (x)) +#define INDEXFI(x, y) (((int)floor(y)) * GRID_WIDTH + ((int)floor(x))) +#define VALNAME(n) [n] = #n + +/* clang-format off */ +enum { + CELL_EMPTY, + CELL_RED, + CELL_BLUE, + CELL_GREEN, + CELL_PURPLE, + CELL_ORANGE, + CELL_SELECTED +}; + +enum { + STATE_IDLE, + STATE_SELECTION, + STATE_MOVING, + STATE_FAILURE, + STATE_SUCCESS +}; + +const char* cell_names[] = { + VALNAME(CELL_EMPTY), + VALNAME(CELL_RED), + VALNAME(CELL_BLUE), + VALNAME(CELL_GREEN), + VALNAME(CELL_PURPLE), + VALNAME(CELL_ORANGE), + VALNAME(CELL_SELECTED), +}; + +const int check_five_deltas[][4] = { + { -1, -1, 1, 1 }, + { 1, -1, -1, 1 }, + { 0, -1, 0, 1 }, + { -1, 0, 1, 0 }, +}; + +const char* state_descriptions[] = { + "Idle", + "Selecting", + "Moving", + "Failed!", + "Success!" +}; + +const char* help_text[] = { + "linije - Color lines clone", + "==========================", + "Version " VERSION, + "", + "F1 - Show this help screen", + "Esc - Hide this help screen", + "Alt+Enter - Toggle fullscreen", + "C-Q - Exit", + "", + "---", + "", + "This program is licensed under the terms of GNU GPL v3 or (at your", + "option) any later version. Copyright (C) 2025 Strahinya Radich.", + "See the file LICENSE for exact copyright and license details.", + NULL +}; +/* clang-format on */ + +struct AnimationState { + SDL_FPoint start; + SDL_FPoint position; + SDL_FPoint end; + SDL_FPoint delta; + int active; + int step; + int final_step; +}; + +struct Cell { + int empty; /* logical variables */ + int starting; + int ending; + int path; + SDL_FPoint coords; + int contents; + struct Cell* left; + struct Cell* up; + struct Cell* right; + struct Cell* down; + struct Cell* path_source; /* previous cell in shortest path */ + struct Cell* path_next; /* next cell in shortest path */ + int path_dist; /* length of shortest path so far */ +}; + +struct State { + struct AnimationState animation; + struct Cell* grid; + int location_pointer; + SDL_Point* location_stack; + SDL_FPoint pointer; + float cell_scale_factor; + int display_width; /* Physical, detected */ + int display_height; + int full_screen; + int help_shown; + int mode; + struct Cell* path_start; + struct Cell* path_end; + int redraw; + SDL_Renderer* renderer; + int running; + int screen_width; /* Logical */ + int screen_height; + unsigned int score; + SDL_FPoint selection_start, selection_end; + SDL_Texture* sprites; + SDL_Texture* ter12_texture; + SDL_Texture* background; + SDL_Window* window; + float text_scale_factor; +}; + +void assign_pointFF(const SDL_FPoint* from, SDL_FPoint* to); +void assign_pointIF(const SDL_Point* from, SDL_FPoint* to); +void assign_point_xyIF(const int x, const int y, SDL_FPoint* to); +void calculate_delta(struct State* state); +void calculate_grid_origin(const struct State* state, float* sx, float* sy); +void calculate_display_size(struct State* state); +void check_five(struct State* state, struct Cell* c); +void cleanup(struct State* state); +void do_exit(const int code, struct State* state); +void draw(struct State* state); +void draw_background(struct State* state, SDL_FRect* bg_rect); +void draw_help_dialog(struct State* state); +void draw_text(struct State* state, const int x, const int y, + const int font_width, const int font_height, SDL_Texture* font_tex, + const char* text, ...); +void fill_triplet(struct State* state); +void find_shortest_path(struct Cell* c, struct Cell* source, const int dist); +void get_sprite_xy(const char cell, float* x, float* y); +void grid_coord_to_screen_coord(const struct State* state, const int x, + const int y, const float startx, const float starty, float* to_x, + float* to_y); +void grid_coord_to_screen_coordF(const struct State* state, const float x, + const float y, const float startx, const float starty, float* to_x, + float* to_y); +void handle_click(struct State* state); +void handle_event(struct State* state, SDL_Event* event); +void init_cell(struct Cell* c, const SDL_FPoint* coords); +void init_state(struct State* state); +int load_textures(struct State* state); +int location_pop(struct State* state, SDL_Point* location); +void location_push(struct State* state, const SDL_Point* location); +void mark_path(struct Cell* c); +void next_step(struct State* state); +int passable(const struct State* state, const int x, const int y); +void print_matrix(const struct Cell* M); +void print_path(struct Cell* c); +void reset(struct State* state); +void reset_path(struct Cell* grid); +void screen_coord_to_grid_coord(struct State* state, const int x, const int y, + const float startx, const float starty, float* to_x, float* to_y); +void screen_coord_to_grid_coordF(struct State* state, const float x, + const float y, const float startx, const float starty, float* to_x, + float* to_y); +void step_animation(struct State* state); +SDL_Surface* try_load(const char* filename); + +void +assign_pointFF(const SDL_FPoint* from, SDL_FPoint* to) +{ + assert((from != NULL) && (to != NULL)); + to->x = (float)from->x; + to->y = (float)from->y; +} + +void +assign_pointIF(const SDL_Point* from, SDL_FPoint* to) +{ + assert((from != NULL) && (to != NULL)); + to->x = (float)from->x; + to->y = (float)from->y; +} + +void +assign_point_xyIF(const int x, const int y, SDL_FPoint* to) +{ + assert(to != NULL); + to->x = (float)x; + to->y = (float)y; +} + +void +calculate_delta(struct State* state) +{ + struct AnimationState* animation; + + assert(state != NULL); + animation = &state->animation; + animation->delta.x + = fabsf(animation->end.x - animation->start.x) / ANIM_STEPS; + if (animation->end.x < animation->start.x) + animation->delta.x *= -1; + animation->delta.y + = fabsf(animation->end.y - animation->start.y) / ANIM_STEPS; + if (animation->end.y < animation->start.y) + animation->delta.y *= -1; + SDL_LogDebug(SDL_LOG_CATEGORY_APPLICATION, + "calculate_delta: (%0.2f, %0.2f)", animation->delta.x, + animation->delta.y); +} + +void +calculate_grid_origin(const struct State* state, float* sx, float* sy) +{ + int cx, cy; + + assert((state != NULL) && (sx != NULL) && (sy != NULL)); + cx = state->screen_width / 2; + cy = state->screen_height / 2; + + *sx = cx - (state->cell_scale_factor * GRID_WIDTH * CELL_SIZE) / 2; + *sy = cy - (state->cell_scale_factor * GRID_HEIGHT * CELL_SIZE) / 2; +} + +void +calculate_display_size(struct State* state) +{ + assert(state != NULL); + if (!SDL_GetRenderOutputSize(state->renderer, &state->display_width, + &state->display_height)) + { + SDL_LogError(SDL_LOG_CATEGORY_ERROR, + "SDL_GetRenderOutputSize failed"); + do_exit(1, state); + } + SDL_LogDebug(SDL_LOG_CATEGORY_APPLICATION, + "output display size: (%d, %d)", state->display_width, + state->display_height); +} + +void +check_five(struct State* state, struct Cell* c) +{ + struct Cell* current = NULL; + SDL_FPoint start, end; + int x, y, len; + int i; + + i = 0; +check_five_loop: + assign_pointFF(&c->coords, &start); + assign_pointFF(&c->coords, &end); + x = c->coords.x; + y = c->coords.y; + SDL_LogDebug(SDL_LOG_CATEGORY_APPLICATION, "Deltas: %d, %d", + check_five_deltas[i][0], check_five_deltas[i][1]); + len = 1; + while ((x >= 0 && y >= 0) && (x < GRID_WIDTH && y < GRID_HEIGHT)) + { + SDL_LogDebug(SDL_LOG_CATEGORY_APPLICATION, "At (%d, %d): %s", x, + y, cell_names[state->grid[INDEX(x, y)].contents]); + if (state->grid[INDEX(x, y)].contents == c->contents) + { + assign_point_xyIF(x, y, &start); + len++; + } + else + break; + x += check_five_deltas[i][0]; + y += check_five_deltas[i][1]; + } + x = c->coords.x + check_five_deltas[i][2]; + y = c->coords.y + check_five_deltas[i][3]; + SDL_LogDebug(SDL_LOG_CATEGORY_APPLICATION, "Deltas: %d, %d", + check_five_deltas[i][2], check_five_deltas[i][3]); + while ((x >= 0 && y >= 0) && (x < GRID_WIDTH && y < GRID_HEIGHT)) + { + SDL_LogDebug(SDL_LOG_CATEGORY_APPLICATION, "At (%d, %d): %s", x, + y, cell_names[state->grid[INDEX(x, y)].contents]); + if (state->grid[INDEX(x, y)].contents == c->contents) + { + assign_point_xyIF(x, y, &end); + len++; + } + else + break; + x += check_five_deltas[i][2]; + y += check_five_deltas[i][3]; + } + if (len > MIN_POP_LEN) + { + SDL_LogDebug(SDL_LOG_CATEGORY_APPLICATION, + "check_five: String, from (%0.0f, %0.0f) to (%0.0f, " + "%0.0f)", + start.x, start.y, end.x, end.y); + + SDL_LogDebug(SDL_LOG_CATEGORY_APPLICATION, + "for (%0.0f; y != %0.0f + %d; y += %d)", + start.y, end.y, check_five_deltas[i][3], + check_five_deltas[i][3]); + SDL_LogDebug(SDL_LOG_CATEGORY_APPLICATION, + "for (%0.0f; x != %0.0f + %d; x += %d)", + start.x, end.x, check_five_deltas[i][2], + check_five_deltas[i][2]); + x = start.x; + y = start.y; + do + { + current = &state->grid[INDEX(x, y)]; + SDL_LogDebug(SDL_LOG_CATEGORY_APPLICATION, + "Before erase: (%0.0f, %0.0f) [%d, %d] is %s", + current->coords.x, + current->coords.y, + x, y, + cell_names[current->contents]); + current->contents = CELL_EMPTY; + current->empty = 1; + SDL_LogDebug(SDL_LOG_CATEGORY_APPLICATION, + "After erase: (%0.0f, %0.0f) is %s", + current->coords.x, + current->coords.y, + cell_names[current->contents]); + x += check_five_deltas[i][2]; + y += check_five_deltas[i][3]; + } + while (!((x == end.x + check_five_deltas[i][2]) + && (y == end.y + check_five_deltas[i][3]))); + + state->score += len * POP_STRING_CELL_VALUE; + goto check_five_finish; + } + else + { + SDL_LogDebug(SDL_LOG_CATEGORY_APPLICATION, + "check_five: len = %d, not popping", len); + } + i++; + if (i < sizeof(check_five_deltas) / sizeof(check_five_deltas[0])) + goto check_five_loop; + + fill_triplet(state); + +check_five_finish: + state->mode = STATE_IDLE; +} + +void +cleanup(struct State* state) +{ + assert(state != NULL); + + free(state->location_stack); + free(state->grid); + + if (state->background) + SDL_DestroyTexture(state->background); + if (state->ter12_texture) + SDL_DestroyTexture(state->ter12_texture); + if (state->sprites) + SDL_DestroyTexture(state->sprites); + if (state->renderer) + SDL_DestroyRenderer(state->renderer); + if (state->window) + SDL_DestroyWindow(state->window); + + SDL_Quit(); +} + +void +do_exit(const int code, struct State* state) +{ + cleanup(state); + exit(code); +} + +void +draw(struct State* state) +{ + struct Cell* c = NULL; + SDL_FRect bg_rect, cell_rect; + SDL_FRect dest_rect; + int x, y; + float crx, cry; + float drx, dry; + float startx, starty; + + assert(state != NULL); + assert(state->cell_scale_factor != 0.0f); + + calculate_grid_origin(state, &startx, &starty); + + bg_rect.x = 0; + bg_rect.y = 0; + bg_rect.w = state->cell_scale_factor * (CELL_SIZE * GRID_WIDTH + 1); + bg_rect.h = state->cell_scale_factor * (CELL_SIZE * GRID_HEIGHT + 1); + + SDL_SetRenderDrawColor(state->renderer, 0, 0, 0, SDL_ALPHA_OPAQUE); + SDL_RenderClear(state->renderer); + + /* Render background */ + if (!state->background) + draw_background(state, &bg_rect); + + /* Draw buffered copy of background */ + dest_rect.x = startx; + dest_rect.y = starty; + dest_rect.w = bg_rect.w; + dest_rect.h = bg_rect.h; + SDL_RenderLine(state->renderer, 1, 1, 50, 50); + SDL_RenderTexture(state->renderer, state->background, &bg_rect, + &dest_rect); + + /* Draw balls */ + cell_rect.w = CELL_SIZE; + cell_rect.h = CELL_SIZE; + dest_rect.w = state->cell_scale_factor * CELL_SIZE; + dest_rect.h = state->cell_scale_factor * CELL_SIZE; + for (y = 0; y < GRID_HEIGHT; y++) + for (x = 0; x < GRID_WIDTH; x++) + { + c = &state->grid[INDEX(x, y)]; + if (c->contents == CELL_EMPTY) + continue; + + get_sprite_xy(c->contents, &crx, &cry); + cell_rect.x = crx; + cell_rect.y = cry; + if (c->path) + { + grid_coord_to_screen_coord(state, + state->animation.position.x, + state->animation.position.y, startx + 1, + starty + 1, &drx, &dry); + } + else + { + grid_coord_to_screen_coord(state, x, y, + startx + 1, starty + 1, &drx, &dry); + } + dest_rect.x = drx; + dest_rect.y = dry; + SDL_RenderTexture(state->renderer, state->sprites, + &cell_rect, &dest_rect); + } + + /* Draw selection */ + if (state->selection_start.x != -1) + { + get_sprite_xy(CELL_SELECTED, &crx, &cry); + cell_rect.x = crx; + cell_rect.y = cry; + grid_coord_to_screen_coord(state, state->selection_start.x, + state->selection_start.y, startx + 1, starty + 1, &drx, + &dry); + dest_rect.x = drx; + dest_rect.y = dry; + SDL_RenderTexture(state->renderer, state->sprites, &cell_rect, + &dest_rect); + } + + /* Render status */ + draw_text(state, 0, + state->screen_height - state->text_scale_factor * TER12_HEIGHT, + TER12_WIDTH, TER12_HEIGHT, state->ter12_texture, + "Score: %06u F1 = Help Status: %s", state->score, + state_descriptions[state->mode]); + + if (state->help_shown) + draw_help_dialog(state); + + /*draw_text(600, screen_height - text_scale_factor * TER12_HEIGHT, + TER12_WIDTH, TER12_HEIGHT, ter12_texture, "(%05.2f, %05.2f)", + pointer.x, pointer.y);*/ + + SDL_RenderPresent(state->renderer); +} + +void +draw_background(struct State* state, SDL_FRect* bg_rect) +{ + const SDL_DisplayMode* mode; + SDL_FRect cell_rect, dest_rect; + SDL_DisplayID display; + float crx, cry; + float drx, dry; + int x, y; + + assert((state != NULL) && (bg_rect != NULL)); + assert(state->cell_scale_factor != 0.0f); + + if ((display = SDL_GetDisplayForWindow(state->window)) == 0) + { + SDL_LogError(SDL_LOG_CATEGORY_ERROR, + "SDL_GetDisplayForWindow failed: %s", SDL_GetError()); + do_exit(1, state); + } + + if ((mode = SDL_GetCurrentDisplayMode(display)) == NULL) + { + SDL_LogError(SDL_LOG_CATEGORY_ERROR, + "SDL_GetCurrentDisplayMode failed: %s", SDL_GetError()); + do_exit(1, state); + } + + state->background = SDL_CreateTexture(state->renderer, mode->format, + SDL_TEXTUREACCESS_TARGET, bg_rect->w, bg_rect->h); + if (!state->background) + { + SDL_LogError(SDL_LOG_CATEGORY_ERROR, + "SDL_CreateTexture failed: %s", SDL_GetError()); + do_exit(1, state); + } + if (!SDL_SetRenderTarget(state->renderer, state->background)) + { + SDL_LogError(SDL_LOG_CATEGORY_ERROR, + "SDL_SetRenderTarget failed: %s", SDL_GetError()); + do_exit(1, state); + } + + dest_rect.w = state->cell_scale_factor * CELL_SIZE; + dest_rect.h = state->cell_scale_factor * CELL_SIZE; + get_sprite_xy(CELL_EMPTY, &crx, &cry); + cell_rect.x = crx; + cell_rect.y = cry; + cell_rect.w = CELL_SIZE; + cell_rect.h = CELL_SIZE; + for (y = 0; y < GRID_HEIGHT; y++) + for (x = 0; x < GRID_WIDTH; x++) + { + grid_coord_to_screen_coord(state, x, y, 0.0f, 0.0f, + &drx, &dry); + dest_rect.x = state->cell_scale_factor + drx; + dest_rect.y = state->cell_scale_factor + dry; + SDL_RenderTexture(state->renderer, state->sprites, + &cell_rect, &dest_rect); + } + + /* Draw upper border */ + for (x = -1; x < GRID_WIDTH; x++) + { + grid_coord_to_screen_coord(state, x, -1, 0.0f, 0.0f, &drx, &dry); + dest_rect.x = state->cell_scale_factor + drx; + dest_rect.y = state->cell_scale_factor + dry; + SDL_RenderTexture(state->renderer, state->sprites, &cell_rect, + &dest_rect); + } + + /* Draw left border */ + for (y = 0; y < GRID_WIDTH; y++) + { + grid_coord_to_screen_coord(state, -1, y, 0.0f, 0.0f, &drx, &dry); + dest_rect.x = state->cell_scale_factor + drx; + dest_rect.y = state->cell_scale_factor + dry; + SDL_RenderTexture(state->renderer, state->sprites, &cell_rect, + &dest_rect); + } + + SDL_SetRenderDrawBlendMode(state->renderer, SDL_BLENDMODE_NONE); + SDL_SetRenderDrawColor(state->renderer, 255, 255, 255, SDL_ALPHA_OPAQUE); + + SDL_SetRenderTarget(state->renderer, NULL); +} + +void +draw_help_dialog(struct State* state) +{ + const char** phelp_text = help_text; + int sx = state->screen_width / 2 - HELP_DIALOG_WIDTH / 2; + int sy = state->screen_height / 2 - HELP_DIALOG_HEIGHT / 2; + SDL_FRect dialog_rect; + + dialog_rect.x = sx; + dialog_rect.y = sy; + dialog_rect.w = HELP_DIALOG_WIDTH; + dialog_rect.h = HELP_DIALOG_HEIGHT; + + SDL_SetRenderDrawBlendMode(state->renderer, SDL_BLENDMODE_BLEND); + SDL_SetRenderDrawColor(state->renderer, 0, 0, 0, .75 * 255); + SDL_RenderFillRect(state->renderer, &dialog_rect); + + SDL_SetRenderDrawBlendMode(state->renderer, SDL_BLENDMODE_NONE); + SDL_SetRenderDrawColor(state->renderer, 255, 255, 255, SDL_ALPHA_OPAQUE); + SDL_RenderRect(state->renderer, &dialog_rect); + SDL_SetRenderDrawColor(state->renderer, 0, 0, 0, SDL_ALPHA_OPAQUE); + dialog_rect.x--; + dialog_rect.y--; + dialog_rect.w += 2; + dialog_rect.h += 2; + SDL_RenderRect(state->renderer, &dialog_rect); + dialog_rect.x--; + dialog_rect.y--; + dialog_rect.w += 2; + dialog_rect.h += 2; + SDL_RenderRect(state->renderer, &dialog_rect); + + while (*phelp_text) + { + draw_text(state, + sx + state->text_scale_factor * (2 * TER12_WIDTH), + sy + + (phelp_text - help_text + 1) + * state->text_scale_factor + * (TER12_HEIGHT + 2), + TER12_WIDTH, TER12_HEIGHT, state->ter12_texture, + *phelp_text); + phelp_text++; + } +} + +void +draw_text(struct State* state, const int x, const int y, const int font_width, + const int font_height, SDL_Texture* font_tex, const char* text, ...) +{ + char buf[PRINT_BUFSIZE]; + va_list args; + const char* pbuf = NULL; + int xstart = 0; + int ystart = 0; + SDL_FRect source_rect; + SDL_FRect dest_rect; + int index = 0; + int chars_per_row = 0; + char first_char = ' '; + char last_char = '~'; + float tex_w, tex_h; + + assert((font_tex != NULL) && (text != NULL)); + assert(state->text_scale_factor != 0.0f); + assert(font_width != -1); + + va_start(args, text); + vsnprintf(buf, sizeof(buf), text, args); + va_end(args); + + source_rect.w = font_width; + source_rect.h = font_height; + + dest_rect.x = x; + dest_rect.y = y; + dest_rect.w = state->text_scale_factor * font_width; + dest_rect.h = state->text_scale_factor * font_height; + + if (!SDL_GetTextureSize(font_tex, &tex_w, &tex_h)) + { + SDL_LogError(SDL_LOG_CATEGORY_ERROR, + "SDL_GetTextureSize failed: %s", SDL_GetError()); + do_exit(1, state); + } + + chars_per_row = tex_w / (font_width + 1); + + pbuf = buf; + // SDL_SetRenderScale(renderer, scale_factor, scale_factor); + while (*pbuf) + { + if (*pbuf >= first_char && *pbuf <= last_char) + { + index = (int)(*pbuf - first_char); + + xstart = 1 + index % chars_per_row * (font_width + 1); + ystart = 1 + index / chars_per_row * (font_height + 1); + } + else + break; + + source_rect.x = xstart; + source_rect.y = ystart; + + SDL_RenderTexture(state->renderer, font_tex, &source_rect, + &dest_rect); + + dest_rect.x += state->text_scale_factor * font_width; + + pbuf++; + } + // SDL_SetRenderScale(renderer, 1.0f, 1.0f); +} + +void +fill_triplet(struct State* state) +{ + int x, y; + int pass; + char color; + + pass = 0; +fill_triplet_generate: + x = random() % GRID_WIDTH; + y = random() % GRID_HEIGHT; + if (state->grid[INDEX(x, y)].contents != CELL_EMPTY) + goto fill_triplet_generate; + + switch (random() % 5) + { + case 0: + color = CELL_RED; + break; + case 1: + color = CELL_BLUE; + break; + case 2: + color = CELL_GREEN; + break; + case 3: + color = CELL_PURPLE; + break; + default: + color = CELL_ORANGE; + } + state->grid[INDEX(x, y)].contents = color; + state->grid[INDEX(x, y)].empty = 0; + pass++; + SDL_LogDebug(SDL_LOG_CATEGORY_APPLICATION, + "fill_triplet: %s at (%d, %d)", cell_names[(int)color], x, y); + if (pass < 3) + goto fill_triplet_generate; +} + +void +find_shortest_path(struct Cell* c, struct Cell* source, const int dist) +{ + if (!c || c->path_dist <= dist) + return; + + if (!c->empty && !c->starting && !c->ending) + return; + + if (c->starting) + c->path_dist = dist; + + if (c->path_dist > dist) + { + c->path_dist = dist; + c->path_source = source; + } + + if (c->ending) + return; + + find_shortest_path(c->left, c, dist + 1); + find_shortest_path(c->up, c, dist + 1); + find_shortest_path(c->right, c, dist + 1); + find_shortest_path(c->down, c, dist + 1); +} + +void +get_sprite_xy(const char cell, float* x, float* y) +{ + assert((x != NULL) && (y != NULL)); + switch (cell) + { + case CELL_RED: + *x = 1 * CELL_SIZE; + *y = 0; + break; + case CELL_BLUE: + *x = 2 * CELL_SIZE; + *y = 0; + break; + case CELL_GREEN: + *x = 3 * CELL_SIZE; + *y = 0; + break; + case CELL_PURPLE: + *x = 4 * CELL_SIZE; + *y = 0; + break; + case CELL_ORANGE: + *x = 5 * CELL_SIZE; + *y = 0; + break; + case CELL_SELECTED: + *x = 0; + *y = 1 * CELL_SIZE; + break; + default: + *x = 0; + *y = 0; + } + /*SDL_LogDebug("get_sprite_xy: %d @ (%0.0f, %0.0f)", + cell, *x, *y);*/ +} + +void +grid_coord_to_screen_coord(const struct State* state, const int x, const int y, + const float startx, const float starty, float* to_x, float* to_y) +{ + assert((state != NULL) && (to_x != NULL) && (to_y != NULL)); + *to_x = startx + x * state->cell_scale_factor * CELL_SIZE; + *to_y = starty + y * state->cell_scale_factor * CELL_SIZE; +} + +void +grid_coord_to_screen_coordF(const struct State* state, const float x, + const float y, const float startx, const float starty, float* to_x, + float* to_y) +{ + assert((state != NULL) && (to_x != NULL) && (to_y != NULL)); + *to_x = startx + x * state->cell_scale_factor * CELL_SIZE; + *to_y = starty + y * state->cell_scale_factor * CELL_SIZE; +} + +static char* cell_image[] = {"[ ]", "[R]", "[B]", "[G]", "[P]", "[O]", "[/]", + "[S]", "[E]", "[.]"}; + +#define CELL_START 7 +#define CELL_END 8 +#define CELL_PATH 9 + +void +handle_click(struct State* state) +{ + float startx, starty; + + assert(state != NULL); + if (state->mode == STATE_IDLE) + { + calculate_grid_origin(state, &startx, &starty); + screen_coord_to_grid_coord(state, state->pointer.x, + state->pointer.y, startx, starty, + &state->selection_start.x, &state->selection_start.y); + state->animation.start.x = (int)state->selection_start.x; + state->animation.start.y = (int)state->selection_start.y; + state->animation.position.x = state->animation.start.x; + state->animation.position.y = state->animation.start.y; + state->path_start + = &state->grid[INDEXFI(state->animation.start.x, + state->animation.start.y)]; + SDL_LogDebug(SDL_LOG_CATEGORY_APPLICATION, + "path_start(%0.2f, %0.2f)->empty = %s", + state->path_start->coords.x, + state->path_start->coords.y, + state->path_start->empty ? "TRUE" : "FALSE"); + if (state->path_start->empty) + { + state->path_start = NULL; + state->selection_start.x = -1; + state->selection_start.y = -1; + return; + } + + state->mode = STATE_SELECTION; + state->path_start->starting = 1; + SDL_LogDebug(SDL_LOG_CATEGORY_APPLICATION, + "[origin = (%0.2f, %0.2f)] " + "pointer = (%0.2f, %0.2f) => " + "selected = (%0.2f, %0.2f)", + startx, starty, state->pointer.x, state->pointer.y, + state->selection_start.x, state->selection_start.y); + state->redraw = 1; + } + else if (state->mode == STATE_SELECTION) + { + state->mode = STATE_MOVING; + calculate_grid_origin(state, &startx, &starty); + screen_coord_to_grid_coord(state, state->pointer.x, + state->pointer.y, startx, starty, + &state->selection_end.x, &state->selection_end.y); + state->path_end = &state->grid[INDEXFI(state->selection_end.x, + state->selection_end.y)]; + + if (!state->path_end->empty) + goto handle_click_reset; + + SDL_LogDebug(SDL_LOG_CATEGORY_APPLICATION, + "[origin = (%0.2f, %0.2f)] " + "pointer = (%0.2f, %0.2f) => " + "selected_end = (%0.2f, %0.2f)", + startx, starty, state->pointer.x, state->pointer.y, + state->selection_end.x, state->selection_end.y); + + SDL_LogDebug(SDL_LOG_CATEGORY_APPLICATION, + "Path: (%0.0f, %0.0f) to (%0.0f, %0.0f)", + state->path_start->coords.x, + state->path_start->coords.y, state->path_end->coords.x, + state->path_end->coords.y); + state->path_end->ending = 1; + + find_shortest_path(state->path_start, NULL, 0); + mark_path(state->path_end); + printf("M =\n"); + print_matrix(state->grid); + + /* Should never happen */ + if (!state->path_start->path_next) + goto handle_click_reset; + + state->animation.end.x = state->path_start->path_next->coords.x; + state->animation.end.y = state->path_start->path_next->coords.y; + SDL_LogDebug(SDL_LOG_CATEGORY_APPLICATION, + "Animation: (%0.0f, %0.0f) to (%0.0f, %0.0f)", + state->animation.start.x, state->animation.start.y, + state->animation.end.x, state->animation.end.y); + state->selection_start.x = -1; + state->selection_start.y = -1; + calculate_delta(state); + state->animation.step = 1; + state->animation.final_step = ANIM_STEPS; + state->animation.active = 1; + state->redraw = 1; + print_path(&state->grid[INDEXFI(state->animation.start.x, + state->animation.start.y)]); + } + return; + +handle_click_reset: + SDL_LogDebug(SDL_LOG_CATEGORY_APPLICATION, "handle_click: Reset"); + state->selection_start.x = -1; + state->selection_start.y = -1; + state->path_start->starting = 0; + state->path_start = NULL; + state->path_end->ending = 0; + state->path_end = NULL; + state->mode = STATE_IDLE; + state->redraw = 1; +} + +void +handle_event(struct State* state, SDL_Event* event) +{ + /* assert(3) within the SDL_PollEvent(3) loop hangs the entire system + * when given an argument which evaluates to zero, so we are taking the + * risk here (and only here) */ + /*assert((state != NULL) && (event != NULL));*/ + + switch (event->type) + { + case SDL_EVENT_QUIT: + state->running = 0; + break; + case SDL_EVENT_WINDOW_RESIZED: + state->redraw = 1; + calculate_display_size(state); + break; + case SDL_EVENT_KEY_DOWN: + SDL_LogDebug(SDL_LOG_CATEGORY_APPLICATION, + "Got Keydown, key = %X, mod = %X", event->key.key, + event->key.mod); + + switch (event->key.key) + { + case SDLK_F1: + state->help_shown = 1; + state->redraw = 1; + break; + case SDLK_RETURN: + if (!(event->key.mod & SDL_KMOD_ALT)) + break; + state->full_screen = !state->full_screen; + SDL_LogDebug(SDL_LOG_CATEGORY_APPLICATION, + "Set fullscreen state: %s", + state->full_screen ? "ON" : "OFF"); + SDL_SetWindowFullscreen(state->window, + state->full_screen); + break; + case SDLK_ESCAPE: + state->help_shown = 0; + state->redraw = 1; + break; + case SDLK_Q: + if (event->key.mod & SDL_KMOD_CTRL) + state->running = 0; + break; + default: + SDL_LogDebug(SDL_LOG_CATEGORY_APPLICATION, + "Handle keyboard event: switch fallthrough"); + } + break; + case SDL_EVENT_MOUSE_BUTTON_UP: + handle_click(state); + break; + case SDL_EVENT_MOUSE_MOTION: + state->pointer.x = event->motion.x; + state->pointer.y = event->motion.y; + state->redraw = 1; + break; + } +} + +void +init_animation(struct AnimationState* animation) +{ + assert(animation != NULL); + animation->start.x = -1; + animation->start.y = -1; + animation->position.x = -1; + animation->position.y = -1; + animation->end.x = -1; + animation->end.y = -1; + animation->delta.x = 0; + animation->delta.y = 0; + animation->active = 0; + animation->step = 0; + animation->final_step = 0; +} + +void +init_cell(struct Cell* c, const SDL_FPoint* coords) +{ + assert((c != NULL) && (coords != NULL)); + c->empty = 1; + c->starting = 0; + c->ending = 0; + c->path = 0; + c->coords.x = coords->x; + c->coords.y = coords->y; + c->contents = CELL_EMPTY; + c->left = c->up = c->right = c->down = NULL; + c->path_source = NULL; + c->path_dist = INT_MAX; +} + +void +init_state(struct State* state) +{ + assert(state != NULL); + init_animation(&state->animation); + state->grid = NULL; + state->location_pointer = 0; + state->location_stack = NULL; + state->cell_scale_factor = 2.0f; + state->display_width = DEFAULT_WIDTH; + state->display_height = DEFAULT_HEIGHT; + state->full_screen = 1; + state->help_shown = 0; + state->path_start = NULL; + state->path_end = NULL; + state->redraw = 1; + state->renderer = NULL; + state->running = 1; + state->screen_width = DEFAULT_WIDTH; + state->screen_height = DEFAULT_HEIGHT; + state->score = 0; + state->sprites = NULL; + state->mode = STATE_IDLE; + state->ter12_texture = NULL; + state->background = NULL; + state->window = NULL; + state->text_scale_factor = 2.0f; +} + +int +load_textures(struct State* state) +{ + SDL_Surface* surface = NULL; + SDL_ScaleMode scale_mode = SDL_SCALEMODE_PIXELART; + + assert(state != NULL); + + surface = try_load(SPRITES_PNG); + if (!surface) + return -1; + state->sprites = SDL_CreateTextureFromSurface(state->renderer, surface); + if (!state->sprites) + { + SDL_LogError(SDL_LOG_CATEGORY_ERROR, + "SDL_CreateTextureFromSurface failed: %s", + SDL_GetError()); + do_exit(1, state); + } + SDL_SetTextureScaleMode(state->sprites, scale_mode); + SDL_DestroySurface(surface); + + surface = try_load(TER12_PNG); + if (!surface) + return -1; + state->ter12_texture + = SDL_CreateTextureFromSurface(state->renderer, surface); + if (!state->ter12_texture) + { + SDL_LogError(SDL_LOG_CATEGORY_ERROR, + "SDL_CreateTextureFromSurface failed: %s", + SDL_GetError()); + do_exit(1, state); + } + SDL_SetTextureScaleMode(state->ter12_texture, scale_mode); + SDL_DestroySurface(surface); + + return 0; +} + +int +location_pop(struct State* state, SDL_Point* location) +{ + assert((state != NULL) && (location != NULL)); + if (state->location_pointer == 0) + return 1; + state->location_pointer--; + location->x = state->location_stack[state->location_pointer].x; + location->y = state->location_stack[state->location_pointer].y; + return 0; +} + +void +location_push(struct State* state, const SDL_Point* location) +{ + assert(location != NULL); + state->location_stack[state->location_pointer].x = location->x; + state->location_stack[state->location_pointer].y = location->y; + state->location_pointer++; +} + +void +mark_path(struct Cell* c) +{ + if (!c) + return; + + c->path = 1; + if (c->path_source) + { + c->path_source->path_next = c; + SDL_LogDebug(SDL_LOG_CATEGORY_APPLICATION, + "mark_path: Next of (%0.0f, %0.0f) is (%0.0f, %0.0f)", + c->path_source->coords.x, c->path_source->coords.y, + c->path_source->path_next->coords.x, + c->path_source->path_next->coords.y); + } + mark_path(c->path_source); +} + +void +next_step(struct State* state) +{ + assert(state != NULL); + state->redraw = 1; +} + +int +passable(const struct State* state, const int x, const int y) +{ + assert(state != NULL); + return x >= 0 && x < GRID_WIDTH && y >= 0 && y < GRID_HEIGHT + && state->grid[INDEX(x, y)].contents == CELL_EMPTY; +} + +void +print_matrix(const struct Cell* M) +{ + const struct Cell* c = NULL; + int x, y; + + for (y = 0; y < GRID_HEIGHT; y++) + { + for (x = 0; x < GRID_WIDTH; x++) + { + c = &M[INDEX(x, y)]; + if (c->starting) + printf("%s", cell_image[CELL_START]); + else if (c->ending) + printf("%s", cell_image[CELL_END]); + else if (c->path) + printf("%s", cell_image[CELL_PATH]); + else if (!c->empty) + printf("%s", cell_image[c->contents]); + else + printf("%s", cell_image[CELL_EMPTY]); + } + printf("\n"); + } + // printf("\n"); +} + +void +print_path(struct Cell* c) +{ + printf("(%0.0f, %0.0f)", c->coords.x, c->coords.y); + if (c->path_next) + { + printf(" -> "); + print_path(c->path_next); + } + else + printf("\n"); +} + +void +reset(struct State* state) +{ + for (int y = 0; y < GRID_HEIGHT; y++) + for (int x = 0; x < GRID_WIDTH; x++) + state->grid[INDEX(x, y)].contents = CELL_EMPTY; + state->mode = STATE_IDLE; + state->selection_start.x = -1; + state->selection_start.y = -1; + state->selection_end.x = -1; + state->selection_end.y = -1; + state->location_pointer = 0; + state->animation.active = 0; + state->redraw = 1; +} + +void +reset_path(struct Cell* grid) +{ + struct Cell* c = NULL; + int x, y; + + assert(grid != NULL); + + for (y = 0; y < GRID_HEIGHT; y++) + for (x = 0; x < GRID_WIDTH; x++) + { + c = &grid[INDEX(x, y)]; + c->path_source = NULL; + c->path_next = NULL; + c->path_dist = INT_MAX; + c->starting = 0; + c->ending = 0; + c->path = 0; + } +} + +void +screen_coord_to_grid_coord(struct State* state, const int x, const int y, + const float startx, const float starty, float* to_x, float* to_y) +{ + float _factor_x, _factor_y; + float _startx, _starty; + + assert(state != NULL); + assert((to_x != NULL) && (to_y != NULL) + && (state->cell_scale_factor != 0.0f)); + _factor_x = (float)state->display_width / state->screen_width; + _factor_y = (float)state->display_height / state->screen_height; + _startx = startx * _factor_x; + _starty = starty * _factor_y; + + /* clang-format off */ + *to_x = x >= _startx + ? (x < _startx + _factor_x * state->cell_scale_factor + * CELL_SIZE * GRID_WIDTH + ? (x - _startx) / (_factor_x * state->cell_scale_factor + * CELL_SIZE) + : GRID_WIDTH - 1) + : 0; + *to_y = y >= _starty + ? (y < _starty + _factor_y * state->cell_scale_factor + * CELL_SIZE * GRID_HEIGHT + ? (y - _starty) / (_factor_y * state->cell_scale_factor + * CELL_SIZE) + : GRID_HEIGHT - 1) + : 0; + /* clang-format on */ +} + +void +screen_coord_to_grid_coordF(struct State* state, const float x, const float y, + const float startx, const float starty, float* to_x, float* to_y) +{ + float _factor_x, _factor_y; + float _startx, _starty; + + assert(state != NULL); + assert((to_x != NULL) && (to_y != NULL) + && (state->cell_scale_factor != 0.0f)); + _factor_x = (float)state->display_width / state->screen_width; + _factor_y = (float)state->display_height / state->screen_height; + _startx = startx * _factor_x; + _starty = starty * _factor_y; + + /* clang-format off */ + *to_x = x >= _startx + ? (x < _startx + _factor_x * state->cell_scale_factor + * CELL_SIZE * GRID_WIDTH + ? (x - _startx) / (_factor_x * state->cell_scale_factor + * CELL_SIZE) + : GRID_WIDTH - 1) + : 0; + *to_y = y >= _starty + ? (y < _starty + _factor_y * state->cell_scale_factor + * CELL_SIZE * GRID_HEIGHT + ? (y - _starty) / (_factor_y * state->cell_scale_factor + * CELL_SIZE) + : GRID_HEIGHT - 1) + : 0; + /* clang-format on */ +} + +void +step_animation(struct State* state) +{ + struct Cell* from = NULL; + struct Cell* to = NULL; + int isx, isy, iex, iey; + + if (state->animation.step == state->animation.final_step) + { + isx = (int)round(state->animation.start.x); + isy = (int)round(state->animation.start.y); + iex = (int)round(state->animation.end.x); + iey = (int)round(state->animation.end.y); + from = &state->grid[INDEX(isx, isy)]; + to = &state->grid[INDEX(iex, iey)]; + + if (to->ending) + { + state->animation.active = 0; + SDL_LogDebug(SDL_LOG_CATEGORY_APPLICATION, + "Ending node reached: (%0.0f, %0.0f)", + state->animation.end.x, state->animation.end.y); + } + else if (to->path_next) + { + state->animation.start.x = state->animation.end.x; + state->animation.start.y = state->animation.end.y; + state->animation.position.x = state->animation.start.x; + state->animation.position.y = state->animation.start.y; + state->animation.end.x = to->path_next->coords.x; + state->animation.end.y = to->path_next->coords.y; + SDL_LogDebug(SDL_LOG_CATEGORY_APPLICATION, + "Next node on path: (%0.0f, %0.0f)", + state->animation.end.x, state->animation.end.y); + SDL_LogDebug(SDL_LOG_CATEGORY_APPLICATION, + "Animation: (%0.0f, %0.0f) to (%0.0f, %0.0f)", + state->animation.start.x, + state->animation.start.y, + state->animation.end.x, state->animation.end.y); + calculate_delta(state); + state->animation.step = 1; + } + else + { + SDL_LogDebug(SDL_LOG_CATEGORY_APPLICATION, + "End of path at (%0.0f, %0.0f)", + state->animation.end.x, state->animation.end.y); + state->animation.active = 0; + } + + SDL_LogDebug(SDL_LOG_CATEGORY_APPLICATION, + "grid[%d][%d] = %d <-> grid[%d][%d] = %d", iey, iex, + to->contents, isy, isx, from->contents); + to->contents = from->contents; + from->contents = CELL_EMPTY; + to->empty = 0; + from->empty = 1; + + if (to->ending) + { + reset_path(state->grid); + state->path_start = NULL; + state->path_end = NULL; + + check_five(state, to); + } + } + + // print_path(&grid[INDEXFI(animation.start.x, animation.start.y)]); + state->animation.position.x += state->animation.delta.x; + state->animation.position.y += state->animation.delta.y; + state->animation.step++; + SDL_LogDebug(SDL_LOG_CATEGORY_APPLICATION, + "step_animation: (%0.2f, %0.2f) => (%0.2f, %0.2f), [%d/%d] %s", + state->animation.position.x, state->animation.position.y, + state->animation.end.x, state->animation.end.y, + state->animation.step, state->animation.final_step, + state->animation.active ? "ACTIVE" : "INACTIVE"); +} + +SDL_Surface* +try_load(const char* filename) +{ + SDL_Surface* surface = NULL; + char tex_pathname[BUFSIZE]; + + assert(filename != NULL); + snprintf(tex_pathname, BUFSIZE, "%s/%s", DATADIR, filename); + surface = IMG_Load(tex_pathname); + if (!surface) + { + SDL_LogError(SDL_LOG_CATEGORY_ERROR, + "try_load: IMG_Load failed: %s", SDL_GetError()); + snprintf(tex_pathname, BUFSIZE, "./%s", filename); + SDL_LogDebug(SDL_LOG_CATEGORY_APPLICATION, + "try_load: trying %s", tex_pathname); + surface = IMG_Load(tex_pathname); + if (!surface) + { + SDL_LogError(SDL_LOG_CATEGORY_ERROR, + "try_load: IMG_Load failed: %s", + SDL_GetError()); + exit(1); + } + SDL_LogDebug(SDL_LOG_CATEGORY_APPLICATION, + "try_load: success (%s)", tex_pathname); + } + + return surface; +} + +int +main(int argc, char** argv) +{ + SDL_Event event; + struct Cell* c = NULL; + struct State state; + struct timespec now; + SDL_FPoint coords; + float px, py; + clockid_t cid; + unsigned int last_time, current_time; + int x, y; + + /*atexit(&cleanup);*/ + + init_state(&state); + + if (!SDL_Init(SDL_INIT_VIDEO)) + { + SDL_LogError(SDL_LOG_CATEGORY_ERROR, "SDL_Init failed: %s", + SDL_GetError()); + exit(1); + } + + SDL_SetLogPriorities(SDL_LOG_PRIORITY_DEBUG); + if (!SDL_CreateWindowAndRenderer(WIN_TITLE, DEFAULT_WIDTH, + DEFAULT_HEIGHT, + SDL_WINDOW_FULLSCREEN | SDL_WINDOW_BORDERLESS, + &state.window, &state.renderer)) + { + SDL_LogError(SDL_LOG_CATEGORY_ERROR, + "SDL_CreateWindowAndRenderer failed: %s", + SDL_GetError()); + do_exit(1, &state); + } + + SDL_SetHintWithPriority(SDL_HINT_RENDER_VSYNC, "1", SDL_HINT_OVERRIDE); + SDL_SetRenderLogicalPresentation(state.renderer, DEFAULT_WIDTH, + DEFAULT_HEIGHT, SDL_LOGICAL_PRESENTATION_LETTERBOX); + + calculate_display_size(&state); + + state.grid = malloc(sizeof(struct Cell) * GRID_WIDTH * GRID_HEIGHT + 1); + if (!state.grid) + { + SDL_LogError(SDL_LOG_CATEGORY_ERROR, "calloc failed"); + do_exit(1, &state); + } + for (y = 0; y < GRID_HEIGHT; y++) + for (x = 0; x < GRID_WIDTH; x++) + { + c = &state.grid[INDEX(x, y)]; + coords.x = x; + coords.y = y; + init_cell(c, &coords); + if (x > 0) + c->left = &state.grid[INDEX(x - 1, y)]; + if (y > 0) + c->up = &state.grid[INDEX(x, y - 1)]; + if (x < GRID_WIDTH - 1) + c->right = &state.grid[INDEX(x + 1, y)]; + if (y < GRID_HEIGHT - 1) + c->down = &state.grid[INDEX(x, y + 1)]; + } + + /*grid.width = GRID_WIDTH; + grid.height = GRID_HEIGHT; + grid.cells = (char**)calloc(GRID_HEIGHT, sizeof(char*)); + if (!grid.cells) + { + SDL_LogError(SDL_LOG_CATEGORY_ERROR, "calloc failed"); + exit(1); + } + for (y = 0; y < GRID_HEIGHT; y++) + { + grid.cells[y] = (char*)calloc(GRID_WIDTH, 1); + if (!grid.cells[y]) + { + SDL_LogError(SDL_LOG_CATEGORY_ERROR, "calloc failed"); + exit(1); + } + }*/ + + if (load_textures(&state) < 0) + do_exit(1, &state); + + state.location_stack + = (SDL_Point*)calloc(LOCATION_STACK_MAX, sizeof(SDL_Point)); + state.animation.active = 0; + + SDL_GetMouseState(&px, &py); + state.pointer.x = px; + state.pointer.y = py; + + last_time = SDL_GetTicks(); + clock_getcpuclockid(getpid(), &cid); + clock_gettime(cid, &now); + srandom(now.tv_sec); + + state.selection_start.x = -1; + state.selection_start.y = -1; + state.selection_end.x = -1; + state.selection_end.y = -1; + + fill_triplet(&state); + while (state.running) + { + current_time = SDL_GetTicks(); + if (state.animation.active) + { + if (current_time > last_time + 1000 / 60) + { + draw(&state); + step_animation(&state); + last_time = current_time; + } + } + else + { + if (state.redraw) + { + draw(&state); + state.redraw = 0; + } + } + + while (SDL_PollEvent(&event)) + handle_event(&state, &event); + } + + return 0; +} diff --git a/local.h.in b/local.h.in @@ -0,0 +1,7 @@ +/* This program is licensed under the terms of GNU GPL v3 or (at your option) + * any later version. Copyright (C) 2025 Страхиња Радић. + * See the file LICENSE for exact copyright and license details. */ + +#define DATADIR "%DATADIR%" +#define TER12_PNG "ter12.png" +#define SPRITES_PNG "sprites.png" diff --git a/owner b/owner @@ -0,0 +1 @@ +Страхиња Радић diff --git a/sprites.png b/sprites.png Бинарне датотеке Ñ�е разликују. diff --git a/sprites.xcf.xz b/sprites.xcf.xz Бинарне датотеке Ñ�е разликују. diff --git a/tags b/tags @@ -0,0 +1,676 @@ +!_TAG_EXTRA_DESCRIPTION anonymous /Include tags for non-named objects like lambda/ +!_TAG_EXTRA_DESCRIPTION fileScope /Include tags of file scope/ +!_TAG_EXTRA_DESCRIPTION pseudo /Include pseudo tags/ +!_TAG_EXTRA_DESCRIPTION subparser /Include tags generated by subparsers/ +!_TAG_FIELD_DESCRIPTION epoch /the last modified time of the input file (only for F\/file kind tag)/ +!_TAG_FIELD_DESCRIPTION file /File-restricted scoping/ +!_TAG_FIELD_DESCRIPTION input /input file/ +!_TAG_FIELD_DESCRIPTION name /tag name/ +!_TAG_FIELD_DESCRIPTION pattern /pattern/ +!_TAG_FIELD_DESCRIPTION typeref /Type and name of a variable or typedef/ +!_TAG_FIELD_DESCRIPTION!C++ name /aliased names/ +!_TAG_FILE_FORMAT 2 /extended format; --format=1 will not append ;" to lines/ +!_TAG_FILE_SORTED 1 /0=unsorted, 1=sorted, 2=foldcase/ +!_TAG_KIND_DESCRIPTION!C d,macro /macro definitions/ +!_TAG_KIND_DESCRIPTION!C e,enumerator /enumerators (values inside an enumeration)/ +!_TAG_KIND_DESCRIPTION!C f,function /function definitions/ +!_TAG_KIND_DESCRIPTION!C g,enum /enumeration names/ +!_TAG_KIND_DESCRIPTION!C h,header /included header files/ +!_TAG_KIND_DESCRIPTION!C m,member /struct, and union members/ +!_TAG_KIND_DESCRIPTION!C s,struct /structure names/ +!_TAG_KIND_DESCRIPTION!C t,typedef /typedefs/ +!_TAG_KIND_DESCRIPTION!C u,union /union names/ +!_TAG_KIND_DESCRIPTION!C v,variable /variable definitions/ +!_TAG_KIND_DESCRIPTION!C++ c,class /classes/ +!_TAG_KIND_DESCRIPTION!C++ d,macro /macro definitions/ +!_TAG_KIND_DESCRIPTION!C++ e,enumerator /enumerators (values inside an enumeration)/ +!_TAG_KIND_DESCRIPTION!C++ f,function /function definitions/ +!_TAG_KIND_DESCRIPTION!C++ g,enum /enumeration names/ +!_TAG_KIND_DESCRIPTION!C++ h,header /included header files/ +!_TAG_KIND_DESCRIPTION!C++ m,member /class, struct, and union members/ +!_TAG_KIND_DESCRIPTION!C++ n,namespace /namespaces/ +!_TAG_KIND_DESCRIPTION!C++ s,struct /structure names/ +!_TAG_KIND_DESCRIPTION!C++ t,typedef /typedefs/ +!_TAG_KIND_DESCRIPTION!C++ u,union /union names/ +!_TAG_KIND_DESCRIPTION!C++ v,variable /variable definitions/ +!_TAG_OUTPUT_EXCMD mixed /number, pattern, mixed, or combineV2/ +!_TAG_OUTPUT_FILESEP slash /slash or backslash/ +!_TAG_OUTPUT_MODE u-ctags /u-ctags or e-ctags/ +!_TAG_OUTPUT_VERSION 0.0 /current.age/ +!_TAG_PARSER_VERSION!C 1.1 /current.age/ +!_TAG_PARSER_VERSION!C++ 1.1 /current.age/ +!_TAG_PATTERN_LENGTH_LIMIT 96 /0 for no limit/ +!_TAG_PROC_CWD /home/strajder/src/linije/ // +!_TAG_PROGRAM_AUTHOR Universal Ctags Team // +!_TAG_PROGRAM_NAME Universal Ctags /Derived from Exuberant Ctags/ +!_TAG_PROGRAM_URL https://ctags.io/ /official site/ +!_TAG_PROGRAM_VERSION 6.1.0 // +!_TAG_ROLE_DESCRIPTION!C!function foreigndecl /declared in foreign languages/ +!_TAG_ROLE_DESCRIPTION!C!header local /local header/ +!_TAG_ROLE_DESCRIPTION!C!header system /system header/ +!_TAG_ROLE_DESCRIPTION!C!macro undef /undefined/ +!_TAG_ROLE_DESCRIPTION!C!struct foreigndecl /declared in foreign languages/ +!_TAG_ROLE_DESCRIPTION!C++!header local /local header/ +!_TAG_ROLE_DESCRIPTION!C++!header system /system header/ +!_TAG_ROLE_DESCRIPTION!C++!macro undef /undefined/ +ANIM_SPEED /home/strajder/src/lav-sdl/lav-sdl.c /^#define ANIM_SPEED /;" d file: +ANIM_SPEED /home/strajder/src/linije/linije.c /^#define ANIM_SPEED /;" d file: +ANIM_STEPS /home/strajder/src/lav-sdl/lav-sdl.c /^#define ANIM_STEPS /;" d file: +ANIM_STEPS /home/strajder/src/linije/linije.c /^#define ANIM_STEPS /;" d file: +AnimationState /home/strajder/src/lav-sdl/lav-sdl.c /^struct AnimationState {$/;" s file: +AnimationState /home/strajder/src/linije/linije.c /^struct AnimationState {$/;" s file: +BUFSIZE /home/strajder/src/lav-sdl/lav-sdl.c /^#define BUFSIZE /;" d file: +BUFSIZE /home/strajder/src/linije/linije.c /^#define BUFSIZE /;" d file: +CELL_BLUE /home/strajder/src/linije/linije.c /^ CELL_BLUE,$/;" e enum:__anonf7ed0ac70103 file: +CELL_BLUE /home/strajder/src/linije/linije.c /^ CELL_BLUE,$/;" e enum:__anonf7ed0ac70303 file: +CELL_EMPTY /home/strajder/src/lav-sdl/lav-sdl.c /^ CELL_EMPTY,$/;" e enum:__anona07934b70103 file: +CELL_EMPTY /home/strajder/src/linije/linije.c /^ CELL_EMPTY,$/;" e enum:__anonf7ed0ac70103 file: +CELL_EMPTY /home/strajder/src/linije/linije.c /^ CELL_EMPTY,$/;" e enum:__anonf7ed0ac70303 file: +CELL_EMPTY /home/strajder/tmp/pathfind/pf2.c /^enum { CELL_EMPTY, CELL_FULL, CELL_START, CELL_END, CELL_PATH };$/;" e enum:__anonbf6a67100103 file: +CELL_END /home/strajder/src/lav-sdl/lav-sdl.c /^ CELL_END$/;" e enum:__anona07934b70103 file: +CELL_END /home/strajder/src/linije/linije.c /^ CELL_END$/;" e enum:__anonf7ed0ac70103 file: +CELL_END /home/strajder/src/linije/linije.c /^#define CELL_END /;" d file: +CELL_END /home/strajder/tmp/pathfind/pf2.c /^enum { CELL_EMPTY, CELL_FULL, CELL_START, CELL_END, CELL_PATH };$/;" e enum:__anonbf6a67100103 file: +CELL_FAIL /home/strajder/src/lav-sdl/lav-sdl.c /^ CELL_FAIL,$/;" e enum:__anona07934b70103 file: +CELL_FAIL /home/strajder/src/linije/linije.c /^ CELL_FAIL,$/;" e enum:__anonf7ed0ac70103 file: +CELL_FULL /home/strajder/tmp/pathfind/pf2.c /^enum { CELL_EMPTY, CELL_FULL, CELL_START, CELL_END, CELL_PATH };$/;" e enum:__anonbf6a67100103 file: +CELL_GREEN /home/strajder/src/linije/linije.c /^ CELL_GREEN,$/;" e enum:__anonf7ed0ac70103 file: +CELL_GREEN /home/strajder/src/linije/linije.c /^ CELL_GREEN,$/;" e enum:__anonf7ed0ac70303 file: +CELL_OK /home/strajder/src/lav-sdl/lav-sdl.c /^ CELL_OK,$/;" e enum:__anona07934b70103 file: +CELL_OK /home/strajder/src/linije/linije.c /^ CELL_OK,$/;" e enum:__anonf7ed0ac70103 file: +CELL_ORANGE /home/strajder/src/linije/linije.c /^ CELL_ORANGE$/;" e enum:__anonf7ed0ac70103 file: +CELL_ORANGE /home/strajder/src/linije/linije.c /^ CELL_ORANGE$/;" e enum:__anonf7ed0ac70303 file: +CELL_ORANGE /home/strajder/src/linije/linije.c /^ CELL_ORANGE,$/;" e enum:__anonf7ed0ac70103 file: +CELL_ORANGE /home/strajder/src/linije/linije.c /^ CELL_ORANGE,$/;" e enum:__anonf7ed0ac70303 file: +CELL_PATH /home/strajder/src/linije/linije.c /^#define CELL_PATH /;" d file: +CELL_PATH /home/strajder/tmp/pathfind/pf2.c /^enum { CELL_EMPTY, CELL_FULL, CELL_START, CELL_END, CELL_PATH };$/;" e enum:__anonbf6a67100103 file: +CELL_PURPLE /home/strajder/src/linije/linije.c /^ CELL_PURPLE,$/;" e enum:__anonf7ed0ac70103 file: +CELL_PURPLE /home/strajder/src/linije/linije.c /^ CELL_PURPLE,$/;" e enum:__anonf7ed0ac70303 file: +CELL_RED /home/strajder/src/linije/linije.c /^ CELL_RED,$/;" e enum:__anonf7ed0ac70103 file: +CELL_RED /home/strajder/src/linije/linije.c /^ CELL_RED,$/;" e enum:__anonf7ed0ac70303 file: +CELL_SELECTED /home/strajder/src/linije/linije.c /^ CELL_SELECTED$/;" e enum:__anonf7ed0ac70103 file: +CELL_SELECTED /home/strajder/src/linije/linije.c /^ CELL_SELECTED$/;" e enum:__anonf7ed0ac70303 file: +CELL_SIZE /home/strajder/src/lav-sdl/lav-sdl.c /^#define CELL_SIZE /;" d file: +CELL_SIZE /home/strajder/src/linije/linije.c /^#define CELL_SIZE /;" d file: +CELL_START /home/strajder/src/lav-sdl/lav-sdl.c /^ CELL_START,$/;" e enum:__anona07934b70103 file: +CELL_START /home/strajder/src/linije/linije.c /^ CELL_START,$/;" e enum:__anonf7ed0ac70103 file: +CELL_START /home/strajder/src/linije/linije.c /^#define CELL_START /;" d file: +CELL_START /home/strajder/tmp/pathfind/pf2.c /^enum { CELL_EMPTY, CELL_FULL, CELL_START, CELL_END, CELL_PATH };$/;" e enum:__anonbf6a67100103 file: +CELL_WALL /home/strajder/src/lav-sdl/lav-sdl.c /^ CELL_WALL,$/;" e enum:__anona07934b70103 file: +CELL_WALL /home/strajder/src/linije/linije.c /^ CELL_WALL,$/;" e enum:__anonf7ed0ac70103 file: +Cell /home/strajder/src/linije/linije.c /^struct Cell {$/;" s file: +Cell /home/strajder/tmp/pathfind/pf2.c /^struct Cell {$/;" s file: +Coord /home/strajder/src/linije/linije.c /^struct Coord {$/;" s file: +Coord /home/strajder/tmp/pathfind/pf2.c /^struct Coord {$/;" s file: +DEFAULT_HEIGHT /home/strajder/src/lav-sdl/lav-sdl.c /^#define DEFAULT_HEIGHT /;" d file: +DEFAULT_HEIGHT /home/strajder/src/linije/linije.c /^#define DEFAULT_HEIGHT /;" d file: +DEFAULT_WIDTH /home/strajder/src/lav-sdl/lav-sdl.c /^#define DEFAULT_WIDTH /;" d file: +DEFAULT_WIDTH /home/strajder/src/linije/linije.c /^#define DEFAULT_WIDTH /;" d file: +FPS /home/strajder/src/lav-sdl/lav-sdl.c /^#define FPS /;" d file: +FPS /home/strajder/src/linije/linije.c /^#define FPS /;" d file: +GRID_HEIGHT /home/strajder/src/linije/linije.c /^#define GRID_HEIGHT /;" d file: +GRID_WIDTH /home/strajder/src/linije/linije.c /^#define GRID_WIDTH /;" d file: +Grid /home/strajder/src/linije/linije.c /^struct Grid {$/;" s file: +H /home/strajder/tmp/pathfind/pf2.c /^#define H /;" d file: +HELP_DIALOG_HEIGHT /home/strajder/src/lav-sdl/lav-sdl.c /^#define HELP_DIALOG_HEIGHT /;" d file: +HELP_DIALOG_HEIGHT /home/strajder/src/linije/linije.c /^#define HELP_DIALOG_HEIGHT /;" d file: +HELP_DIALOG_WIDTH /home/strajder/src/lav-sdl/lav-sdl.c /^#define HELP_DIALOG_WIDTH /;" d file: +HELP_DIALOG_WIDTH /home/strajder/src/linije/linije.c /^#define HELP_DIALOG_WIDTH /;" d file: +INDEX /home/strajder/src/linije/linije.c /^#define INDEX(/;" d file: +INDEX /home/strajder/tmp/pathfind/pf2.c /^#define INDEX(/;" d file: +INDEXFI /home/strajder/src/linije/linije.c /^#define INDEXFI(/;" d file: +LABYRINTH_MAXHEIGHT /home/strajder/src/lav-sdl/lav-sdl.c /^#define LABYRINTH_MAXHEIGHT /;" d file: +LABYRINTH_MAXHEIGHT /home/strajder/src/linije/linije.c /^#define LABYRINTH_MAXHEIGHT /;" d file: +LABYRINTH_MAXWIDTH /home/strajder/src/lav-sdl/lav-sdl.c /^#define LABYRINTH_MAXWIDTH /;" d file: +LABYRINTH_MAXWIDTH /home/strajder/src/linije/linije.c /^#define LABYRINTH_MAXWIDTH /;" d file: +LOCATION_STACK_MAX /home/strajder/src/lav-sdl/lav-sdl.c /^#define LOCATION_STACK_MAX /;" d file: +LOCATION_STACK_MAX /home/strajder/src/linije/linije.c /^#define LOCATION_STACK_MAX /;" d file: +Labyrinth /home/strajder/src/lav-sdl/lav-sdl.c /^struct Labyrinth {$/;" s file: +Labyrinth /home/strajder/src/linije/linije.c /^struct Labyrinth {$/;" s file: +MAX /home/strajder/src/lav-sdl/lav-sdl.c /^#define MAX(/;" d file: +MAX /home/strajder/src/linije/linije.c /^#define MAX(/;" d file: +MIN /home/strajder/src/lav-sdl/lav-sdl.c /^#define MIN(/;" d file: +MIN /home/strajder/src/linije/linije.c /^#define MIN(/;" d file: +MIN_POP_LEN /home/strajder/src/linije/linije.c /^#define MIN_POP_LEN /;" d file: +MIN_POP_LEN /home/strajder/src/linije/linije.c /^#define MIN_POP_LEN /;" d file: +POP_STRING_CELL_VALUE /home/strajder/src/linije/linije.c /^#define POP_STRING_CELL_VALUE /;" d file: +PRINT_BUFSIZE /home/strajder/src/lav-sdl/lav-sdl.c /^#define PRINT_BUFSIZE /;" d file: +PRINT_BUFSIZE /home/strajder/src/linije/linije.c /^#define PRINT_BUFSIZE /;" d file: +PRINT_BUFSIZE /home/strajder/src/linije/linije.c /^#define PRINT_BUFSIZE /;" d file: +PROGNAME /home/strajder/src/lav-sdl/lav-sdl.c /^#define PROGNAME /;" d file: +PROGNAME /home/strajder/src/linije/linije.c /^#define PROGNAME /;" d file: +PROGNAME /home/strajder/src/linije/linije.c /^#define PROGNAME /;" d file: +SDL_DEBUG_TEXT_FONT_CHARACTER_SIZE /usr/local/include/SDL3/SDL_render.h /^#define SDL_DEBUG_TEXT_FONT_CHARACTER_SIZE /;" d +SDL_GPURenderState /usr/local/include/SDL3/SDL_render.h /^typedef struct SDL_GPURenderState SDL_GPURenderState;$/;" t typeref:struct:SDL_GPURenderState +SDL_GPURenderStateDesc /usr/local/include/SDL3/SDL_render.h /^typedef struct SDL_GPURenderStateDesc$/;" s +SDL_GPURenderStateDesc /usr/local/include/SDL3/SDL_render.h /^} SDL_GPURenderStateDesc;$/;" t typeref:struct:SDL_GPURenderStateDesc +SDL_LOGICAL_PRESENTATION_DISABLED /usr/local/include/SDL3/SDL_render.h /^ SDL_LOGICAL_PRESENTATION_DISABLED, \/**< There is no logical size in effect *\/$/;" e enum:SDL_RendererLogicalPresentation +SDL_LOGICAL_PRESENTATION_INTEGER_SCALE /usr/local/include/SDL3/SDL_render.h /^ SDL_LOGICAL_PRESENTATION_INTEGER_SCALE \/**< The rendered content is scaled up by integer /;" e enum:SDL_RendererLogicalPresentation +SDL_LOGICAL_PRESENTATION_LETTERBOX /usr/local/include/SDL3/SDL_render.h /^ SDL_LOGICAL_PRESENTATION_LETTERBOX, \/**< The rendered content is fit to the largest dimensi/;" e enum:SDL_RendererLogicalPresentation +SDL_LOGICAL_PRESENTATION_OVERSCAN /usr/local/include/SDL3/SDL_render.h /^ SDL_LOGICAL_PRESENTATION_OVERSCAN, \/**< The rendered content is fit to the smallest dimens/;" e enum:SDL_RendererLogicalPresentation +SDL_LOGICAL_PRESENTATION_STRETCH /usr/local/include/SDL3/SDL_render.h /^ SDL_LOGICAL_PRESENTATION_STRETCH, \/**< The rendered content is stretched to the output re/;" e enum:SDL_RendererLogicalPresentation +SDL_LogDebug /home/strajder/src/linije/linije.c /^SDL_LogDebug(const char* fmt, ...)$/;" f typeref:typename:void +SDL_LogError /home/strajder/src/linije/linije.c /^SDL_LogError(const char* fmt, ...)$/;" f typeref:typename:void +SDL_PROP_RENDERER_CREATE_GPU_SHADERS_DXIL_BOOLEAN /usr/local/include/SDL3/SDL_render.h /^#define SDL_PROP_RENDERER_CREATE_GPU_SHADERS_DXIL_BOOLEAN /;" d +SDL_PROP_RENDERER_CREATE_GPU_SHADERS_MSL_BOOLEAN /usr/local/include/SDL3/SDL_render.h /^#define SDL_PROP_RENDERER_CREATE_GPU_SHADERS_MSL_BOOLEAN /;" d +SDL_PROP_RENDERER_CREATE_GPU_SHADERS_SPIRV_BOOLEAN /usr/local/include/SDL3/SDL_render.h /^#define SDL_PROP_RENDERER_CREATE_GPU_SHADERS_SPIRV_BOOLEAN /;" d +SDL_PROP_RENDERER_CREATE_NAME_STRING /usr/local/include/SDL3/SDL_render.h /^#define SDL_PROP_RENDERER_CREATE_NAME_STRING /;" d +SDL_PROP_RENDERER_CREATE_OUTPUT_COLORSPACE_NUMBER /usr/local/include/SDL3/SDL_render.h /^#define SDL_PROP_RENDERER_CREATE_OUTPUT_COLORSPACE_NUMBER /;" d +SDL_PROP_RENDERER_CREATE_PRESENT_VSYNC_NUMBER /usr/local/include/SDL3/SDL_render.h /^#define SDL_PROP_RENDERER_CREATE_PRESENT_VSYNC_NUMBER /;" d +SDL_PROP_RENDERER_CREATE_SURFACE_POINTER /usr/local/include/SDL3/SDL_render.h /^#define SDL_PROP_RENDERER_CREATE_SURFACE_POINTER /;" d +SDL_PROP_RENDERER_CREATE_VULKAN_DEVICE_POINTER /usr/local/include/SDL3/SDL_render.h /^#define SDL_PROP_RENDERER_CREATE_VULKAN_DEVICE_POINTER /;" d +SDL_PROP_RENDERER_CREATE_VULKAN_GRAPHICS_QUEUE_FAMILY_INDEX_NUMBER /usr/local/include/SDL3/SDL_render.h /^#define SDL_PROP_RENDERER_CREATE_VULKAN_GRAPHICS_QUEUE_FAMILY_INDEX_NUMBER /;" d +SDL_PROP_RENDERER_CREATE_VULKAN_INSTANCE_POINTER /usr/local/include/SDL3/SDL_render.h /^#define SDL_PROP_RENDERER_CREATE_VULKAN_INSTANCE_POINTER /;" d +SDL_PROP_RENDERER_CREATE_VULKAN_PHYSICAL_DEVICE_POINTER /usr/local/include/SDL3/SDL_render.h /^#define SDL_PROP_RENDERER_CREATE_VULKAN_PHYSICAL_DEVICE_POINTER /;" d +SDL_PROP_RENDERER_CREATE_VULKAN_PRESENT_QUEUE_FAMILY_INDEX_NUMBER /usr/local/include/SDL3/SDL_render.h /^#define SDL_PROP_RENDERER_CREATE_VULKAN_PRESENT_QUEUE_FAMILY_INDEX_NUMBER /;" d +SDL_PROP_RENDERER_CREATE_VULKAN_SURFACE_NUMBER /usr/local/include/SDL3/SDL_render.h /^#define SDL_PROP_RENDERER_CREATE_VULKAN_SURFACE_NUMBER /;" d +SDL_PROP_RENDERER_CREATE_WINDOW_POINTER /usr/local/include/SDL3/SDL_render.h /^#define SDL_PROP_RENDERER_CREATE_WINDOW_POINTER /;" d +SDL_PROP_RENDERER_D3D11_DEVICE_POINTER /usr/local/include/SDL3/SDL_render.h /^#define SDL_PROP_RENDERER_D3D11_DEVICE_POINTER /;" d +SDL_PROP_RENDERER_D3D11_SWAPCHAIN_POINTER /usr/local/include/SDL3/SDL_render.h /^#define SDL_PROP_RENDERER_D3D11_SWAPCHAIN_POINTER /;" d +SDL_PROP_RENDERER_D3D12_COMMAND_QUEUE_POINTER /usr/local/include/SDL3/SDL_render.h /^#define SDL_PROP_RENDERER_D3D12_COMMAND_QUEUE_POINTER /;" d +SDL_PROP_RENDERER_D3D12_DEVICE_POINTER /usr/local/include/SDL3/SDL_render.h /^#define SDL_PROP_RENDERER_D3D12_DEVICE_POINTER /;" d +SDL_PROP_RENDERER_D3D12_SWAPCHAIN_POINTER /usr/local/include/SDL3/SDL_render.h /^#define SDL_PROP_RENDERER_D3D12_SWAPCHAIN_POINTER /;" d +SDL_PROP_RENDERER_D3D9_DEVICE_POINTER /usr/local/include/SDL3/SDL_render.h /^#define SDL_PROP_RENDERER_D3D9_DEVICE_POINTER /;" d +SDL_PROP_RENDERER_GPU_DEVICE_POINTER /usr/local/include/SDL3/SDL_render.h /^#define SDL_PROP_RENDERER_GPU_DEVICE_POINTER /;" d +SDL_PROP_RENDERER_HDR_ENABLED_BOOLEAN /usr/local/include/SDL3/SDL_render.h /^#define SDL_PROP_RENDERER_HDR_ENABLED_BOOLEAN /;" d +SDL_PROP_RENDERER_HDR_HEADROOM_FLOAT /usr/local/include/SDL3/SDL_render.h /^#define SDL_PROP_RENDERER_HDR_HEADROOM_FLOAT /;" d +SDL_PROP_RENDERER_MAX_TEXTURE_SIZE_NUMBER /usr/local/include/SDL3/SDL_render.h /^#define SDL_PROP_RENDERER_MAX_TEXTURE_SIZE_NUMBER /;" d +SDL_PROP_RENDERER_NAME_STRING /usr/local/include/SDL3/SDL_render.h /^#define SDL_PROP_RENDERER_NAME_STRING /;" d +SDL_PROP_RENDERER_OUTPUT_COLORSPACE_NUMBER /usr/local/include/SDL3/SDL_render.h /^#define SDL_PROP_RENDERER_OUTPUT_COLORSPACE_NUMBER /;" d +SDL_PROP_RENDERER_SDR_WHITE_POINT_FLOAT /usr/local/include/SDL3/SDL_render.h /^#define SDL_PROP_RENDERER_SDR_WHITE_POINT_FLOAT /;" d +SDL_PROP_RENDERER_SURFACE_POINTER /usr/local/include/SDL3/SDL_render.h /^#define SDL_PROP_RENDERER_SURFACE_POINTER /;" d +SDL_PROP_RENDERER_TEXTURE_FORMATS_POINTER /usr/local/include/SDL3/SDL_render.h /^#define SDL_PROP_RENDERER_TEXTURE_FORMATS_POINTER /;" d +SDL_PROP_RENDERER_VSYNC_NUMBER /usr/local/include/SDL3/SDL_render.h /^#define SDL_PROP_RENDERER_VSYNC_NUMBER /;" d +SDL_PROP_RENDERER_VULKAN_DEVICE_POINTER /usr/local/include/SDL3/SDL_render.h /^#define SDL_PROP_RENDERER_VULKAN_DEVICE_POINTER /;" d +SDL_PROP_RENDERER_VULKAN_GRAPHICS_QUEUE_FAMILY_INDEX_NUMBER /usr/local/include/SDL3/SDL_render.h /^#define SDL_PROP_RENDERER_VULKAN_GRAPHICS_QUEUE_FAMILY_INDEX_NUMBER /;" d +SDL_PROP_RENDERER_VULKAN_INSTANCE_POINTER /usr/local/include/SDL3/SDL_render.h /^#define SDL_PROP_RENDERER_VULKAN_INSTANCE_POINTER /;" d +SDL_PROP_RENDERER_VULKAN_PHYSICAL_DEVICE_POINTER /usr/local/include/SDL3/SDL_render.h /^#define SDL_PROP_RENDERER_VULKAN_PHYSICAL_DEVICE_POINTER /;" d +SDL_PROP_RENDERER_VULKAN_PRESENT_QUEUE_FAMILY_INDEX_NUMBER /usr/local/include/SDL3/SDL_render.h /^#define SDL_PROP_RENDERER_VULKAN_PRESENT_QUEUE_FAMILY_INDEX_NUMBER /;" d +SDL_PROP_RENDERER_VULKAN_SURFACE_NUMBER /usr/local/include/SDL3/SDL_render.h /^#define SDL_PROP_RENDERER_VULKAN_SURFACE_NUMBER /;" d +SDL_PROP_RENDERER_VULKAN_SWAPCHAIN_IMAGE_COUNT_NUMBER /usr/local/include/SDL3/SDL_render.h /^#define SDL_PROP_RENDERER_VULKAN_SWAPCHAIN_IMAGE_COUNT_NUMBER /;" d +SDL_PROP_RENDERER_WINDOW_POINTER /usr/local/include/SDL3/SDL_render.h /^#define SDL_PROP_RENDERER_WINDOW_POINTER /;" d +SDL_PROP_TEXTURE_ACCESS_NUMBER /usr/local/include/SDL3/SDL_render.h /^#define SDL_PROP_TEXTURE_ACCESS_NUMBER /;" d +SDL_PROP_TEXTURE_COLORSPACE_NUMBER /usr/local/include/SDL3/SDL_render.h /^#define SDL_PROP_TEXTURE_COLORSPACE_NUMBER /;" d +SDL_PROP_TEXTURE_CREATE_ACCESS_NUMBER /usr/local/include/SDL3/SDL_render.h /^#define SDL_PROP_TEXTURE_CREATE_ACCESS_NUMBER /;" d +SDL_PROP_TEXTURE_CREATE_COLORSPACE_NUMBER /usr/local/include/SDL3/SDL_render.h /^#define SDL_PROP_TEXTURE_CREATE_COLORSPACE_NUMBER /;" d +SDL_PROP_TEXTURE_CREATE_D3D11_TEXTURE_POINTER /usr/local/include/SDL3/SDL_render.h /^#define SDL_PROP_TEXTURE_CREATE_D3D11_TEXTURE_POINTER /;" d +SDL_PROP_TEXTURE_CREATE_D3D11_TEXTURE_U_POINTER /usr/local/include/SDL3/SDL_render.h /^#define SDL_PROP_TEXTURE_CREATE_D3D11_TEXTURE_U_POINTER /;" d +SDL_PROP_TEXTURE_CREATE_D3D11_TEXTURE_V_POINTER /usr/local/include/SDL3/SDL_render.h /^#define SDL_PROP_TEXTURE_CREATE_D3D11_TEXTURE_V_POINTER /;" d +SDL_PROP_TEXTURE_CREATE_D3D12_TEXTURE_POINTER /usr/local/include/SDL3/SDL_render.h /^#define SDL_PROP_TEXTURE_CREATE_D3D12_TEXTURE_POINTER /;" d +SDL_PROP_TEXTURE_CREATE_D3D12_TEXTURE_U_POINTER /usr/local/include/SDL3/SDL_render.h /^#define SDL_PROP_TEXTURE_CREATE_D3D12_TEXTURE_U_POINTER /;" d +SDL_PROP_TEXTURE_CREATE_D3D12_TEXTURE_V_POINTER /usr/local/include/SDL3/SDL_render.h /^#define SDL_PROP_TEXTURE_CREATE_D3D12_TEXTURE_V_POINTER /;" d +SDL_PROP_TEXTURE_CREATE_FORMAT_NUMBER /usr/local/include/SDL3/SDL_render.h /^#define SDL_PROP_TEXTURE_CREATE_FORMAT_NUMBER /;" d +SDL_PROP_TEXTURE_CREATE_HDR_HEADROOM_FLOAT /usr/local/include/SDL3/SDL_render.h /^#define SDL_PROP_TEXTURE_CREATE_HDR_HEADROOM_FLOAT /;" d +SDL_PROP_TEXTURE_CREATE_HEIGHT_NUMBER /usr/local/include/SDL3/SDL_render.h /^#define SDL_PROP_TEXTURE_CREATE_HEIGHT_NUMBER /;" d +SDL_PROP_TEXTURE_CREATE_METAL_PIXELBUFFER_POINTER /usr/local/include/SDL3/SDL_render.h /^#define SDL_PROP_TEXTURE_CREATE_METAL_PIXELBUFFER_POINTER /;" d +SDL_PROP_TEXTURE_CREATE_OPENGLES2_TEXTURE_NUMBER /usr/local/include/SDL3/SDL_render.h /^#define SDL_PROP_TEXTURE_CREATE_OPENGLES2_TEXTURE_NUMBER /;" d +SDL_PROP_TEXTURE_CREATE_OPENGLES2_TEXTURE_UV_NUMBER /usr/local/include/SDL3/SDL_render.h /^#define SDL_PROP_TEXTURE_CREATE_OPENGLES2_TEXTURE_UV_NUMBER /;" d +SDL_PROP_TEXTURE_CREATE_OPENGLES2_TEXTURE_U_NUMBER /usr/local/include/SDL3/SDL_render.h /^#define SDL_PROP_TEXTURE_CREATE_OPENGLES2_TEXTURE_U_NUMBER /;" d +SDL_PROP_TEXTURE_CREATE_OPENGLES2_TEXTURE_V_NUMBER /usr/local/include/SDL3/SDL_render.h /^#define SDL_PROP_TEXTURE_CREATE_OPENGLES2_TEXTURE_V_NUMBER /;" d +SDL_PROP_TEXTURE_CREATE_OPENGL_TEXTURE_NUMBER /usr/local/include/SDL3/SDL_render.h /^#define SDL_PROP_TEXTURE_CREATE_OPENGL_TEXTURE_NUMBER /;" d +SDL_PROP_TEXTURE_CREATE_OPENGL_TEXTURE_UV_NUMBER /usr/local/include/SDL3/SDL_render.h /^#define SDL_PROP_TEXTURE_CREATE_OPENGL_TEXTURE_UV_NUMBER /;" d +SDL_PROP_TEXTURE_CREATE_OPENGL_TEXTURE_U_NUMBER /usr/local/include/SDL3/SDL_render.h /^#define SDL_PROP_TEXTURE_CREATE_OPENGL_TEXTURE_U_NUMBER /;" d +SDL_PROP_TEXTURE_CREATE_OPENGL_TEXTURE_V_NUMBER /usr/local/include/SDL3/SDL_render.h /^#define SDL_PROP_TEXTURE_CREATE_OPENGL_TEXTURE_V_NUMBER /;" d +SDL_PROP_TEXTURE_CREATE_SDR_WHITE_POINT_FLOAT /usr/local/include/SDL3/SDL_render.h /^#define SDL_PROP_TEXTURE_CREATE_SDR_WHITE_POINT_FLOAT /;" d +SDL_PROP_TEXTURE_CREATE_VULKAN_TEXTURE_NUMBER /usr/local/include/SDL3/SDL_render.h /^#define SDL_PROP_TEXTURE_CREATE_VULKAN_TEXTURE_NUMBER /;" d +SDL_PROP_TEXTURE_CREATE_WIDTH_NUMBER /usr/local/include/SDL3/SDL_render.h /^#define SDL_PROP_TEXTURE_CREATE_WIDTH_NUMBER /;" d +SDL_PROP_TEXTURE_D3D11_TEXTURE_POINTER /usr/local/include/SDL3/SDL_render.h /^#define SDL_PROP_TEXTURE_D3D11_TEXTURE_POINTER /;" d +SDL_PROP_TEXTURE_D3D11_TEXTURE_U_POINTER /usr/local/include/SDL3/SDL_render.h /^#define SDL_PROP_TEXTURE_D3D11_TEXTURE_U_POINTER /;" d +SDL_PROP_TEXTURE_D3D11_TEXTURE_V_POINTER /usr/local/include/SDL3/SDL_render.h /^#define SDL_PROP_TEXTURE_D3D11_TEXTURE_V_POINTER /;" d +SDL_PROP_TEXTURE_D3D12_TEXTURE_POINTER /usr/local/include/SDL3/SDL_render.h /^#define SDL_PROP_TEXTURE_D3D12_TEXTURE_POINTER /;" d +SDL_PROP_TEXTURE_D3D12_TEXTURE_U_POINTER /usr/local/include/SDL3/SDL_render.h /^#define SDL_PROP_TEXTURE_D3D12_TEXTURE_U_POINTER /;" d +SDL_PROP_TEXTURE_D3D12_TEXTURE_V_POINTER /usr/local/include/SDL3/SDL_render.h /^#define SDL_PROP_TEXTURE_D3D12_TEXTURE_V_POINTER /;" d +SDL_PROP_TEXTURE_FORMAT_NUMBER /usr/local/include/SDL3/SDL_render.h /^#define SDL_PROP_TEXTURE_FORMAT_NUMBER /;" d +SDL_PROP_TEXTURE_HDR_HEADROOM_FLOAT /usr/local/include/SDL3/SDL_render.h /^#define SDL_PROP_TEXTURE_HDR_HEADROOM_FLOAT /;" d +SDL_PROP_TEXTURE_HEIGHT_NUMBER /usr/local/include/SDL3/SDL_render.h /^#define SDL_PROP_TEXTURE_HEIGHT_NUMBER /;" d +SDL_PROP_TEXTURE_OPENGLES2_TEXTURE_NUMBER /usr/local/include/SDL3/SDL_render.h /^#define SDL_PROP_TEXTURE_OPENGLES2_TEXTURE_NUMBER /;" d +SDL_PROP_TEXTURE_OPENGLES2_TEXTURE_TARGET_NUMBER /usr/local/include/SDL3/SDL_render.h /^#define SDL_PROP_TEXTURE_OPENGLES2_TEXTURE_TARGET_NUMBER /;" d +SDL_PROP_TEXTURE_OPENGLES2_TEXTURE_UV_NUMBER /usr/local/include/SDL3/SDL_render.h /^#define SDL_PROP_TEXTURE_OPENGLES2_TEXTURE_UV_NUMBER /;" d +SDL_PROP_TEXTURE_OPENGLES2_TEXTURE_U_NUMBER /usr/local/include/SDL3/SDL_render.h /^#define SDL_PROP_TEXTURE_OPENGLES2_TEXTURE_U_NUMBER /;" d +SDL_PROP_TEXTURE_OPENGLES2_TEXTURE_V_NUMBER /usr/local/include/SDL3/SDL_render.h /^#define SDL_PROP_TEXTURE_OPENGLES2_TEXTURE_V_NUMBER /;" d +SDL_PROP_TEXTURE_OPENGL_TEXTURE_NUMBER /usr/local/include/SDL3/SDL_render.h /^#define SDL_PROP_TEXTURE_OPENGL_TEXTURE_NUMBER /;" d +SDL_PROP_TEXTURE_OPENGL_TEXTURE_TARGET_NUMBER /usr/local/include/SDL3/SDL_render.h /^#define SDL_PROP_TEXTURE_OPENGL_TEXTURE_TARGET_NUMBER /;" d +SDL_PROP_TEXTURE_OPENGL_TEXTURE_UV_NUMBER /usr/local/include/SDL3/SDL_render.h /^#define SDL_PROP_TEXTURE_OPENGL_TEXTURE_UV_NUMBER /;" d +SDL_PROP_TEXTURE_OPENGL_TEXTURE_U_NUMBER /usr/local/include/SDL3/SDL_render.h /^#define SDL_PROP_TEXTURE_OPENGL_TEXTURE_U_NUMBER /;" d +SDL_PROP_TEXTURE_OPENGL_TEXTURE_V_NUMBER /usr/local/include/SDL3/SDL_render.h /^#define SDL_PROP_TEXTURE_OPENGL_TEXTURE_V_NUMBER /;" d +SDL_PROP_TEXTURE_OPENGL_TEX_H_FLOAT /usr/local/include/SDL3/SDL_render.h /^#define SDL_PROP_TEXTURE_OPENGL_TEX_H_FLOAT /;" d +SDL_PROP_TEXTURE_OPENGL_TEX_W_FLOAT /usr/local/include/SDL3/SDL_render.h /^#define SDL_PROP_TEXTURE_OPENGL_TEX_W_FLOAT /;" d +SDL_PROP_TEXTURE_SDR_WHITE_POINT_FLOAT /usr/local/include/SDL3/SDL_render.h /^#define SDL_PROP_TEXTURE_SDR_WHITE_POINT_FLOAT /;" d +SDL_PROP_TEXTURE_VULKAN_TEXTURE_NUMBER /usr/local/include/SDL3/SDL_render.h /^#define SDL_PROP_TEXTURE_VULKAN_TEXTURE_NUMBER /;" d +SDL_PROP_TEXTURE_WIDTH_NUMBER /usr/local/include/SDL3/SDL_render.h /^#define SDL_PROP_TEXTURE_WIDTH_NUMBER /;" d +SDL_RENDERER_VSYNC_ADAPTIVE /usr/local/include/SDL3/SDL_render.h /^#define SDL_RENDERER_VSYNC_ADAPTIVE /;" d +SDL_RENDERER_VSYNC_DISABLED /usr/local/include/SDL3/SDL_render.h /^#define SDL_RENDERER_VSYNC_DISABLED /;" d +SDL_Renderer /usr/local/include/SDL3/SDL_render.h /^typedef struct SDL_Renderer SDL_Renderer;$/;" t typeref:struct:SDL_Renderer +SDL_RendererLogicalPresentation /usr/local/include/SDL3/SDL_render.h /^typedef enum SDL_RendererLogicalPresentation$/;" g +SDL_RendererLogicalPresentation /usr/local/include/SDL3/SDL_render.h /^} SDL_RendererLogicalPresentation;$/;" t typeref:enum:SDL_RendererLogicalPresentation +SDL_SOFTWARE_RENDERER /usr/local/include/SDL3/SDL_render.h /^#define SDL_SOFTWARE_RENDERER /;" d +SDL_TEXTUREACCESS_STATIC /usr/local/include/SDL3/SDL_render.h /^ SDL_TEXTUREACCESS_STATIC, \/**< Changes rarely, not lockable *\/$/;" e enum:SDL_TextureAccess +SDL_TEXTUREACCESS_STREAMING /usr/local/include/SDL3/SDL_render.h /^ SDL_TEXTUREACCESS_STREAMING, \/**< Changes frequently, lockable *\/$/;" e enum:SDL_TextureAccess +SDL_TEXTUREACCESS_TARGET /usr/local/include/SDL3/SDL_render.h /^ SDL_TEXTUREACCESS_TARGET \/**< Texture can be used as a render target *\/$/;" e enum:SDL_TextureAccess +SDL_TEXTURE_ADDRESS_AUTO /usr/local/include/SDL3/SDL_render.h /^ SDL_TEXTURE_ADDRESS_AUTO, \/**< Wrapping is enabled if texture coordinates are outside [0,/;" e enum:SDL_TextureAddressMode +SDL_TEXTURE_ADDRESS_CLAMP /usr/local/include/SDL3/SDL_render.h /^ SDL_TEXTURE_ADDRESS_CLAMP, \/**< Texture coordinates are clamped to the [0, 1] range *\/$/;" e enum:SDL_TextureAddressMode +SDL_TEXTURE_ADDRESS_INVALID /usr/local/include/SDL3/SDL_render.h /^ SDL_TEXTURE_ADDRESS_INVALID = -1,$/;" e enum:SDL_TextureAddressMode +SDL_TEXTURE_ADDRESS_WRAP /usr/local/include/SDL3/SDL_render.h /^ SDL_TEXTURE_ADDRESS_WRAP \/**< The texture is repeated (tiled) *\/$/;" e enum:SDL_TextureAddressMode +SDL_Texture /usr/local/include/SDL3/SDL_render.h /^struct SDL_Texture$/;" s +SDL_Texture /usr/local/include/SDL3/SDL_render.h /^typedef struct SDL_Texture SDL_Texture;$/;" t typeref:struct:SDL_Texture +SDL_TextureAccess /usr/local/include/SDL3/SDL_render.h /^typedef enum SDL_TextureAccess$/;" g +SDL_TextureAccess /usr/local/include/SDL3/SDL_render.h /^} SDL_TextureAccess;$/;" t typeref:enum:SDL_TextureAccess +SDL_TextureAddressMode /usr/local/include/SDL3/SDL_render.h /^typedef enum SDL_TextureAddressMode$/;" g +SDL_TextureAddressMode /usr/local/include/SDL3/SDL_render.h /^} SDL_TextureAddressMode;$/;" t typeref:enum:SDL_TextureAddressMode +SDL_Vertex /usr/local/include/SDL3/SDL_render.h /^typedef struct SDL_Vertex$/;" s +SDL_Vertex /usr/local/include/SDL3/SDL_render.h /^} SDL_Vertex;$/;" t typeref:struct:SDL_Vertex +SDL_render_h_ /usr/local/include/SDL3/SDL_render.h /^#define SDL_render_h_$/;" d +STATE_FAILURE /home/strajder/src/lav-sdl/lav-sdl.c /^ STATE_FAILURE,$/;" e enum:__anona07934b70203 file: +STATE_FAILURE /home/strajder/src/linije/linije.c /^ STATE_FAILURE,$/;" e enum:__anonf7ed0ac70203 file: +STATE_FAILURE /home/strajder/src/linije/linije.c /^ STATE_FAILURE,$/;" e enum:__anonf7ed0ac70403 file: +STATE_IDLE /home/strajder/src/linije/linije.c /^ STATE_IDLE,$/;" e enum:__anonf7ed0ac70203 file: +STATE_IDLE /home/strajder/src/linije/linije.c /^ STATE_IDLE,$/;" e enum:__anonf7ed0ac70403 file: +STATE_MOVING /home/strajder/src/linije/linije.c /^ STATE_MOVING,$/;" e enum:__anonf7ed0ac70203 file: +STATE_MOVING /home/strajder/src/linije/linije.c /^ STATE_MOVING,$/;" e enum:__anonf7ed0ac70403 file: +STATE_SEARCHING /home/strajder/src/lav-sdl/lav-sdl.c /^ STATE_SEARCHING,$/;" e enum:__anona07934b70203 file: +STATE_SEARCHING /home/strajder/src/linije/linije.c /^ STATE_SEARCHING,$/;" e enum:__anonf7ed0ac70203 file: +STATE_SEARCHING /home/strajder/src/linije/linije.c /^ STATE_SEARCHING,$/;" e enum:__anonf7ed0ac70403 file: +STATE_SEARCHING_PAUSED /home/strajder/src/lav-sdl/lav-sdl.c /^ STATE_SEARCHING_PAUSED,$/;" e enum:__anona07934b70203 file: +STATE_SEARCHING_PAUSED /home/strajder/src/linije/linije.c /^ STATE_SEARCHING_PAUSED,$/;" e enum:__anonf7ed0ac70203 file: +STATE_SEARCHING_PAUSED /home/strajder/src/linije/linije.c /^ STATE_SEARCHING_PAUSED,$/;" e enum:__anonf7ed0ac70403 file: +STATE_SELECTION /home/strajder/src/linije/linije.c /^ STATE_SELECTION,$/;" e enum:__anonf7ed0ac70203 file: +STATE_SELECTION /home/strajder/src/linije/linije.c /^ STATE_SELECTION,$/;" e enum:__anonf7ed0ac70403 file: +STATE_SUCCESS /home/strajder/src/lav-sdl/lav-sdl.c /^ STATE_SUCCESS$/;" e enum:__anona07934b70203 file: +STATE_SUCCESS /home/strajder/src/linije/linije.c /^ STATE_SUCCESS$/;" e enum:__anonf7ed0ac70203 file: +STATE_SUCCESS /home/strajder/src/linije/linije.c /^ STATE_SUCCESS$/;" e enum:__anonf7ed0ac70403 file: +State /home/strajder/src/linije/linije.c /^struct State {$/;" s file: +TER12_HEIGHT /home/strajder/src/lav-sdl/lav-sdl.c /^#define TER12_HEIGHT /;" d file: +TER12_HEIGHT /home/strajder/src/linije/linije.c /^#define TER12_HEIGHT /;" d file: +TER12_HEIGHT /home/strajder/src/linije/linije.c /^#define TER12_HEIGHT /;" d file: +TER12_WIDTH /home/strajder/src/lav-sdl/lav-sdl.c /^#define TER12_WIDTH /;" d file: +TER12_WIDTH /home/strajder/src/linije/linije.c /^#define TER12_WIDTH /;" d file: +TER12_WIDTH /home/strajder/src/linije/linije.c /^#define TER12_WIDTH /;" d file: +VALNAME /home/strajder/src/linije/linije.c /^#define VALNAME(/;" d file: +W /home/strajder/tmp/pathfind/pf2.c /^#define W /;" d file: +WIN_TITLE /home/strajder/src/lav-sdl/lav-sdl.c /^#define WIN_TITLE /;" d file: +WIN_TITLE /home/strajder/src/linije/linije.c /^#define WIN_TITLE /;" d file: +WIN_TITLE /home/strajder/src/linije/linije.c /^#define WIN_TITLE /;" d file: +_M /home/strajder/tmp/pathfind/pf2.c /^static int _M[H][W] = {$/;" v typeref:typename:int[][] file: +__anona07934b70103 /home/strajder/src/lav-sdl/lav-sdl.c /^enum {$/;" g file: +__anona07934b70203 /home/strajder/src/lav-sdl/lav-sdl.c /^enum {$/;" g file: +__anonbf6a67100103 /home/strajder/tmp/pathfind/pf2.c /^enum { CELL_EMPTY, CELL_FULL, CELL_START, CELL_END, CELL_PATH };$/;" g file: +__anonf7ed0ac70103 /home/strajder/src/linije/linije.c /^enum {$/;" g file: +__anonf7ed0ac70203 /home/strajder/src/linije/linije.c /^enum {$/;" g file: +__anonf7ed0ac70303 /home/strajder/src/linije/linije.c /^enum {$/;" g file: +__anonf7ed0ac70403 /home/strajder/src/linije/linije.c /^enum {$/;" g file: +active /home/strajder/src/lav-sdl/lav-sdl.c /^ int active;$/;" m struct:AnimationState typeref:typename:int file: +active /home/strajder/src/linije/linije.c /^ int active;$/;" m struct:AnimationState typeref:typename:int file: +animation /home/strajder/src/lav-sdl/lav-sdl.c /^static struct AnimationState animation;$/;" v typeref:struct:AnimationState file: +animation /home/strajder/src/linije/linije.c /^ struct AnimationState animation;$/;" m struct:State typeref:struct:AnimationState file: +animation /home/strajder/src/linije/linije.c /^static struct AnimationState animation;$/;" v typeref:struct:AnimationState file: +assign_pointFF /home/strajder/src/linije/linije.c /^assign_pointFF(const SDL_FPoint* from, SDL_FPoint* to)$/;" f typeref:typename:void +assign_pointIF /home/strajder/src/lav-sdl/lav-sdl.c /^assign_pointIF(const SDL_Point* from, SDL_FPoint* to)$/;" f typeref:typename:void +assign_pointIF /home/strajder/src/linije/linije.c /^assign_pointIF(const SDL_Point* from, SDL_FPoint* to)$/;" f typeref:typename:void +assign_point_xyIF /home/strajder/src/lav-sdl/lav-sdl.c /^assign_point_xyIF(const int x, const int y, SDL_FPoint* to)$/;" f typeref:typename:void +assign_point_xyIF /home/strajder/src/linije/linije.c /^assign_point_xyIF(const int x, const int y, SDL_FPoint* to)$/;" f typeref:typename:void +background /home/strajder/src/lav-sdl/lav-sdl.c /^static SDL_Texture* background = NULL;$/;" v typeref:typename:SDL_Texture * file: +background /home/strajder/src/linije/linije.c /^ SDL_Texture* background = NULL;$/;" m struct:State typeref:typename:SDL_Texture * file: +background /home/strajder/src/linije/linije.c /^ SDL_Texture* background = NULL;$/;" m struct:State typeref:typename:SDL_Texture * file: +background /home/strajder/src/linije/linije.c /^ SDL_Texture* background = NULL;$/;" m struct:State typeref:typename:SDL_Texture * file: +background /home/strajder/src/linije/linije.c /^ SDL_Texture* background;$/;" m struct:State typeref:typename:SDL_Texture * file: +background /home/strajder/src/linije/linije.c /^static SDL_Texture* background = NULL;$/;" v typeref:typename:SDL_Texture * file: +calculate_delta /home/strajder/src/lav-sdl/lav-sdl.c /^calculate_delta(void)$/;" f typeref:typename:void +calculate_delta /home/strajder/src/linije/linije.c /^calculate_delta(struct State* state)$/;" f typeref:typename:void +calculate_delta /home/strajder/src/linije/linije.c /^calculate_delta(void)$/;" f typeref:typename:void +calculate_display_size /home/strajder/src/linije/linije.c /^calculate_display_size(struct State* state)$/;" f typeref:typename:void +calculate_display_size /home/strajder/src/linije/linije.c /^calculate_display_size(void)$/;" f typeref:typename:void +calculate_grid_origin /home/strajder/src/linije/linije.c /^calculate_grid_origin(const int physical, float* sx, float* sy)$/;" f typeref:typename:void +calculate_grid_origin /home/strajder/src/linije/linije.c /^calculate_grid_origin(const struct State* state, float* sx, float* sy)$/;" f typeref:typename:void +calculate_grid_origin /home/strajder/src/linije/linije.c /^calculate_grid_origin(float* sx, float* sy)$/;" f typeref:typename:void +calculate_grid_origin /home/strajder/src/linije/linije.c /^calculate_grid_origin(struct State* state, float* sx, float* sy)$/;" f typeref:typename:void +calculate_screen_size /home/strajder/src/lav-sdl/lav-sdl.c /^calculate_screen_size(void)$/;" f typeref:typename:void +calculate_screen_size /home/strajder/src/linije/linije.c /^calculate_screen_size(void)$/;" f typeref:typename:void +cell_image /home/strajder/src/linije/linije.c /^static char* cell_image[] = {"[ ]", "[R]", "[B]", "[G]", "[P]", "[O]", "[\/]",$/;" v typeref:typename:char * [] file: +cell_image /home/strajder/src/linije/linije.c /^static char* cell_image[] = {$/;" v typeref:typename:char * [] file: +cell_image /home/strajder/tmp/pathfind/pf2.c /^const char* cell_image[] = {"[ ]", "[@]", "[A]", "[B]", "[.]"};$/;" v typeref:typename:const char * [] +cell_names /home/strajder/src/linije/linije.c /^const char* cell_names[] = {$/;" v typeref:typename:const char * [] +cell_names /home/strajder/src/linije/linije.c /^static char cell_names[][] = {$/;" v typeref:typename:char[][] file: +cell_names /home/strajder/src/linije/linije.c /^static char* cell_names[] = {$/;" v typeref:typename:char * [] file: +cell_names /home/strajder/src/linije/linije.c /^static char** cell_names = {$/;" v typeref:typename:char ** file: +cell_scale_factor /home/strajder/src/linije/linije.c /^ float cell_scale_factor = 2.0f;$/;" m struct:State typeref:typename:float file: +cell_scale_factor /home/strajder/src/linije/linije.c /^ float cell_scale_factor = 2.0f;$/;" m struct:State typeref:typename:float file: +cell_scale_factor /home/strajder/src/linije/linije.c /^ float cell_scale_factor;$/;" m struct:State typeref:typename:float file: +cell_scale_factor /home/strajder/src/linije/linije.c /^static float cell_scale_factor = 2.0f;$/;" v typeref:typename:float file: +cell_scale_factor /home/strajder/src/linije/linije.c /^static float cell_scale_factor = 2.0f;$/;" v typeref:typename:float file: +cells /home/strajder/src/lav-sdl/lav-sdl.c /^ char** cells;$/;" m struct:Labyrinth typeref:typename:char ** file: +cells /home/strajder/src/linije/linije.c /^ char** cells;$/;" m struct:Grid typeref:typename:char ** file: +cells /home/strajder/src/linije/linije.c /^ char** cells;$/;" m struct:Labyrinth typeref:typename:char ** file: +check_five /home/strajder/src/linije/linije.c /^check_five(struct State* state)$/;" f typeref:typename:void +check_five /home/strajder/src/linije/linije.c /^check_five(struct State* state, struct Cell* c)$/;" f typeref:typename:void +check_five /home/strajder/src/linije/linije.c /^check_five(void)$/;" f typeref:typename:void +check_five_deltas /home/strajder/src/linije/linije.c /^const int check_five_deltas[][2] = {$/;" v typeref:typename:const int[][2] +check_five_deltas /home/strajder/src/linije/linije.c /^const int check_five_deltas[][4] = {$/;" v typeref:typename:const int[][4] +cleanup /home/strajder/src/lav-sdl/lav-sdl.c /^cleanup(void)$/;" f typeref:typename:void +cleanup /home/strajder/src/linije/linije.c /^cleanup(struct State* state)$/;" f typeref:typename:void +cleanup /home/strajder/src/linije/linije.c /^cleanup(void)$/;" f typeref:typename:void +color /usr/local/include/SDL3/SDL_render.h /^ SDL_FColor color; \/**< Vertex color *\/$/;" m struct:SDL_Vertex typeref:typename:SDL_FColor +contents /home/strajder/src/linije/linije.c /^ int contents;$/;" m struct:Cell typeref:typename:int file: +coord /home/strajder/src/linije/linije.c /^ SDL_FPoint coord;$/;" m struct:Cell typeref:typename:SDL_FPoint file: +coord /home/strajder/src/linije/linije.c /^ struct Coord coord;$/;" m struct:Cell typeref:struct:Coord file: +coord /home/strajder/tmp/pathfind/pf2.c /^ struct Coord coord;$/;" m struct:Cell typeref:struct:Coord file: +coords /home/strajder/src/linije/linije.c /^ SDL_FPoint coords;$/;" m struct:Cell typeref:typename:SDL_FPoint file: +delta /home/strajder/src/lav-sdl/lav-sdl.c /^ SDL_FPoint delta;$/;" m struct:AnimationState typeref:typename:SDL_FPoint file: +delta /home/strajder/src/linije/linije.c /^ SDL_FPoint delta;$/;" m struct:AnimationState typeref:typename:SDL_FPoint file: +destination /home/strajder/src/lav-sdl/lav-sdl.c /^ SDL_FPoint destination;$/;" m struct:AnimationState typeref:typename:SDL_FPoint file: +destination /home/strajder/src/linije/linije.c /^ SDL_FPoint destination;$/;" m struct:AnimationState typeref:typename:SDL_FPoint file: +destination /home/strajder/src/linije/linije.c /^ SDL_Point destination;$/;" m struct:AnimationState typeref:typename:SDL_Point file: +display_height /home/strajder/src/lav-sdl/lav-sdl.c /^static int display_height = DEFAULT_HEIGHT;$/;" v typeref:typename:int file: +display_height /home/strajder/src/linije/linije.c /^ int display_height = DEFAULT_HEIGHT;$/;" m struct:State typeref:typename:int file: +display_height /home/strajder/src/linije/linije.c /^ int display_height = DEFAULT_HEIGHT;$/;" m struct:State typeref:typename:int file: +display_height /home/strajder/src/linije/linije.c /^ int display_height = DEFAULT_HEIGHT;$/;" m struct:State typeref:typename:int file: +display_height /home/strajder/src/linije/linije.c /^ int display_height;$/;" m struct:State typeref:typename:int file: +display_height /home/strajder/src/linije/linije.c /^static int display_height = DEFAULT_HEIGHT;$/;" v typeref:typename:int file: +display_height /home/strajder/src/linije/linije.c /^static int display_height = DEFAULT_HEIGHT;$/;" v typeref:typename:int file: +display_width /home/strajder/src/lav-sdl/lav-sdl.c /^static int display_width = DEFAULT_WIDTH; \/* Physical, detected *\/$/;" v typeref:typename:int file: +display_width /home/strajder/src/linije/linije.c /^ int display_width = DEFAULT_WIDTH; \/* Physical, detected *\/$/;" m struct:State typeref:typename:int file: +display_width /home/strajder/src/linije/linije.c /^ int display_width = DEFAULT_WIDTH; \/* Physical, detected *\/$/;" m struct:State typeref:typename:int file: +display_width /home/strajder/src/linije/linije.c /^ int display_width = DEFAULT_WIDTH; \/* Physical, detected *\/$/;" m struct:State typeref:typename:int file: +display_width /home/strajder/src/linije/linije.c /^ int display_width; \/* Physical, detected *\/$/;" m struct:State typeref:typename:int file: +display_width /home/strajder/src/linije/linije.c /^static int display_width = DEFAULT_WIDTH; \/* Physical, detected *\/$/;" v typeref:typename:int file: +display_width /home/strajder/src/linije/linije.c /^static int display_width = DEFAULT_WIDTH; \/* Physical, detected *\/$/;" v typeref:typename:int file: +do_exit /home/strajder/src/linije/linije.c /^do_exit(const int code, struct State* state)$/;" f typeref:typename:void +down /home/strajder/src/linije/linije.c /^ struct Cell* down;$/;" m struct:Cell typeref:struct:Cell * file: +down /home/strajder/tmp/pathfind/pf2.c /^ struct Cell* down;$/;" m struct:Cell typeref:struct:Cell * file: +draw /home/strajder/src/lav-sdl/lav-sdl.c /^draw(void)$/;" f typeref:typename:void +draw /home/strajder/src/linije/linije.c /^draw(struct State* state)$/;" f typeref:typename:void +draw /home/strajder/src/linije/linije.c /^draw(void)$/;" f typeref:typename:void +draw_background /home/strajder/src/lav-sdl/lav-sdl.c /^draw_background(SDL_FRect* bg_rect, SDL_FRect* cell_rect, SDL_FRect* dest_rect)$/;" f typeref:typename:void +draw_background /home/strajder/src/linije/linije.c /^draw_background(SDL_FRect* bg_rect)$/;" f typeref:typename:void +draw_background /home/strajder/src/linije/linije.c /^draw_background(SDL_FRect* bg_rect, SDL_FRect* cell_rect, SDL_FRect* dest_rect)$/;" f typeref:typename:void +draw_background /home/strajder/src/linije/linije.c /^draw_background(struct State* state, SDL_FRect* bg_rect)$/;" f typeref:typename:void +draw_background /home/strajder/src/linije/linije.c /^draw_background(void)$/;" f typeref:typename:void +draw_help_dialog /home/strajder/src/lav-sdl/lav-sdl.c /^draw_help_dialog(void)$/;" f typeref:typename:void +draw_help_dialog /home/strajder/src/linije/linije.c /^draw_help_dialog(struct State* state)$/;" f typeref:typename:void +draw_help_dialog /home/strajder/src/linije/linije.c /^draw_help_dialog(void)$/;" f typeref:typename:void +draw_text /home/strajder/src/lav-sdl/lav-sdl.c /^draw_text(const int x, const int y, const int font_width, const int font_height,$/;" f typeref:typename:void +draw_text /home/strajder/src/linije/linije.c /^draw_text(const int x, const int y, const int font_width, const int font_height,$/;" f typeref:typename:void +draw_text /home/strajder/src/linije/linije.c /^draw_text(struct State* state, const int x, const int y, const int font_width, const int font_he/;" f typeref:typename:void +draw_text /home/strajder/src/linije/linije.c /^draw_text(struct State* state, const int x, const int y, const int font_width,$/;" f typeref:typename:void +empty /home/strajder/src/linije/linije.c /^ int empty; \/* logical variables *\/$/;" m struct:Cell typeref:typename:int file: +empty /home/strajder/src/linije/linije.c /^ int empty; \/* logical variables *\/$/;" m struct:Cell typeref:typename:int file: +empty /home/strajder/src/linije/linije.c /^ int empty;$/;" m struct:Cell typeref:typename:int file: +empty /home/strajder/tmp/pathfind/pf2.c /^ int empty;$/;" m struct:Cell typeref:typename:int file: +end /home/strajder/src/lav-sdl/lav-sdl.c /^static SDL_Point hero, start, end;$/;" v typeref:typename:SDL_Point file: +end /home/strajder/src/linije/linije.c /^ SDL_FPoint end;$/;" m struct:AnimationState typeref:typename:SDL_FPoint file: +end /home/strajder/src/linije/linije.c /^ SDL_Point end;$/;" m struct:AnimationState typeref:typename:SDL_Point file: +end /home/strajder/src/linije/linije.c /^static SDL_Point hero, start, end;$/;" v typeref:typename:SDL_Point file: +ending /home/strajder/src/linije/linije.c /^ int ending;$/;" m struct:Cell typeref:typename:int file: +ending /home/strajder/tmp/pathfind/pf2.c /^ int ending;$/;" m struct:Cell typeref:typename:int file: +fill_triplet /home/strajder/src/linije/linije.c /^fill_triplet(struct State* state)$/;" f typeref:typename:void +fill_triplet /home/strajder/src/linije/linije.c /^fill_triplet(void)$/;" f typeref:typename:void +final_step /home/strajder/src/lav-sdl/lav-sdl.c /^ int final_step;$/;" m struct:AnimationState typeref:typename:int file: +final_step /home/strajder/src/linije/linije.c /^ int final_step;$/;" m struct:AnimationState typeref:typename:int file: +find_shortest_path /home/strajder/src/linije/linije.c /^find_shortest_path(struct Cell* c, struct Cell* dist_source, const int dist)$/;" f typeref:typename:void +find_shortest_path /home/strajder/src/linije/linije.c /^find_shortest_path(struct Cell* c, struct Cell* source, const int dist)$/;" f typeref:typename:void +find_shortest_path /home/strajder/tmp/pathfind/pf2.c /^find_shortest_path(struct Cell* c, struct Cell* dist_source, const int dist)$/;" f typeref:typename:void +format /usr/local/include/SDL3/SDL_render.h /^ SDL_PixelFormat format; \/**< The format of the texture, read-only *\/$/;" m struct:SDL_Texture typeref:typename:SDL_PixelFormat +fragment_shader /usr/local/include/SDL3/SDL_render.h /^ SDL_GPUShader *fragment_shader; \/**< The fragment shader to use when this render state is a/;" m struct:SDL_GPURenderStateDesc typeref:typename:SDL_GPUShader * +full_screen /home/strajder/src/linije/linije.c /^ int full_screen = 1;$/;" m struct:State typeref:typename:int file: +full_screen /home/strajder/src/linije/linije.c /^ int full_screen = 1;$/;" m struct:State typeref:typename:int file: +full_screen /home/strajder/src/linije/linije.c /^ int full_screen = 1;$/;" m struct:State typeref:typename:int file: +full_screen /home/strajder/src/linije/linije.c /^ int full_screen;$/;" m struct:State typeref:typename:int file: +full_screen /home/strajder/src/linije/linije.c /^static int full_screen = 1;$/;" v typeref:typename:int file: +full_screen /home/strajder/src/linije/linije.c /^static int full_screen = 0;$/;" v typeref:typename:int file: +full_screen /home/strajder/src/linije/linije.c /^static int full_screen = 1;$/;" v typeref:typename:int file: +get_hero_sprite_xy /home/strajder/src/lav-sdl/lav-sdl.c /^get_hero_sprite_xy(float* x, float* y)$/;" f typeref:typename:void +get_hero_sprite_xy /home/strajder/src/linije/linije.c /^get_hero_sprite_xy(float* x, float* y)$/;" f typeref:typename:void +get_sprite_xy /home/strajder/src/lav-sdl/lav-sdl.c /^get_sprite_xy(const char cell, float* x, float* y)$/;" f typeref:typename:void +get_sprite_xy /home/strajder/src/linije/linije.c /^get_sprite_xy(const char cell, float* x, float* y)$/;" f typeref:typename:void +grid /home/strajder/src/linije/linije.c /^ struct Cell* grid = NULL;$/;" m struct:State typeref:struct:Cell * file: +grid /home/strajder/src/linije/linije.c /^ struct Cell* grid = NULL;$/;" m struct:State typeref:struct:Cell * file: +grid /home/strajder/src/linije/linije.c /^ struct Cell* grid = NULL;$/;" m struct:State typeref:struct:Cell * file: +grid /home/strajder/src/linije/linije.c /^ struct Cell* grid;$/;" m struct:State typeref:struct:Cell * file: +grid /home/strajder/src/linije/linije.c /^static struct Cell* grid = NULL;$/;" v typeref:struct:Cell * file: +grid /home/strajder/src/linije/linije.c /^static struct Cell* grid = NULL;$/;" v typeref:struct:Cell * file: +grid /home/strajder/src/linije/linije.c /^static struct Cell* grid;$/;" v typeref:struct:Cell * file: +grid /home/strajder/src/linije/linije.c /^static struct Grid grid;$/;" v typeref:struct:Grid file: +grid_coord_to_screen_coord /home/strajder/src/linije/linije.c /^grid_coord_to_screen_coord(const int x, const int y, const float startx,$/;" f typeref:typename:void +grid_coord_to_screen_coord /home/strajder/src/linije/linije.c /^grid_coord_to_screen_coord(const struct State* state, const int x, const int y, const float star/;" f typeref:typename:void +grid_coord_to_screen_coord /home/strajder/src/linije/linije.c /^grid_coord_to_screen_coord(const struct State* state, const int x, const int y,$/;" f typeref:typename:void +grid_coord_to_screen_coordF /home/strajder/src/linije/linije.c /^grid_coord_to_screen_coordF(const float x, const float y, const float startx,$/;" f typeref:typename:void +grid_coord_to_screen_coordF /home/strajder/src/linije/linije.c /^grid_coord_to_screen_coordF(const float x, const float y,$/;" f typeref:typename:void +grid_coord_to_screen_coordF /home/strajder/src/linije/linije.c /^grid_coord_to_screen_coordF(const struct State* state, const float x, const float y, const float/;" f typeref:typename:void +grid_coord_to_screen_coordF /home/strajder/src/linije/linije.c /^grid_coord_to_screen_coordF(const struct State* state, const float x,$/;" f typeref:typename:void +h /usr/local/include/SDL3/SDL_render.h /^ int h; \/**< The height of the texture, read-only. *\/$/;" m struct:SDL_Texture typeref:typename:int +handle_click /home/strajder/src/linije/linije.c /^handle_click(struct State* state)$/;" f typeref:typename:void +handle_click /home/strajder/src/linije/linije.c /^handle_click(void)$/;" f typeref:typename:void +handle_event /home/strajder/src/lav-sdl/lav-sdl.c /^handle_event(SDL_Event* event)$/;" f typeref:typename:void +handle_event /home/strajder/src/linije/linije.c /^handle_event(SDL_Event* event)$/;" f typeref:typename:void +handle_event /home/strajder/src/linije/linije.c /^handle_event(struct State* state, SDL_Event* event)$/;" f typeref:typename:void +height /home/strajder/src/lav-sdl/lav-sdl.c /^ int height;$/;" m struct:Labyrinth typeref:typename:int file: +height /home/strajder/src/linije/linije.c /^ int height;$/;" m struct:Grid typeref:typename:int file: +height /home/strajder/src/linije/linije.c /^ int height;$/;" m struct:Labyrinth typeref:typename:int file: +help_shown /home/strajder/src/lav-sdl/lav-sdl.c /^static int help_shown = 0;$/;" v typeref:typename:int file: +help_shown /home/strajder/src/linije/linije.c /^ int help_shown = 0;$/;" m struct:State typeref:typename:int file: +help_shown /home/strajder/src/linije/linije.c /^ int help_shown = 0;$/;" m struct:State typeref:typename:int file: +help_shown /home/strajder/src/linije/linije.c /^ int help_shown = 0;$/;" m struct:State typeref:typename:int file: +help_shown /home/strajder/src/linije/linije.c /^ int help_shown;$/;" m struct:State typeref:typename:int file: +help_shown /home/strajder/src/linije/linije.c /^static int help_shown = 0;$/;" v typeref:typename:int file: +help_shown /home/strajder/src/linije/linije.c /^static int help_shown = 0;$/;" v typeref:typename:int file: +help_text /home/strajder/src/lav-sdl/lav-sdl.c /^const char* help_text[] = {$/;" v typeref:typename:const char * [] +help_text /home/strajder/src/linije/linije.c /^const char* help_text[] = {$/;" v typeref:typename:const char * [] +hero /home/strajder/src/lav-sdl/lav-sdl.c /^static SDL_Point hero, start, end;$/;" v typeref:typename:SDL_Point file: +hero /home/strajder/src/linije/linije.c /^static SDL_Point hero, start, end;$/;" v typeref:typename:SDL_Point file: +init_animation /home/strajder/src/linije/linije.c /^init_animation(struct AnimationState* animation)$/;" f typeref:typename:void +init_cell /home/strajder/src/linije/linije.c /^init_cell(struct Cell* c, const SDL_FPoint* coord)$/;" f typeref:typename:void +init_cell /home/strajder/src/linije/linije.c /^init_cell(struct Cell* c, const SDL_FPoint* coords)$/;" f typeref:typename:void +init_cell /home/strajder/src/linije/linije.c /^init_cell(struct Cell* c, const struct Coord* coord)$/;" f typeref:typename:void +init_state /home/strajder/src/linije/linije.c /^init_state(struct State* state)$/;" f typeref:typename:void +labyrinth /home/strajder/src/lav-sdl/lav-sdl.c /^static struct Labyrinth labyrinth;$/;" v typeref:struct:Labyrinth file: +labyrinth /home/strajder/src/linije/linije.c /^static struct Labyrinth labyrinth;$/;" v typeref:struct:Labyrinth file: +labyrinth_coord_to_screen_coord /home/strajder/src/lav-sdl/lav-sdl.c /^labyrinth_coord_to_screen_coord(const int x, const int y, const float startx,$/;" f typeref:typename:void +labyrinth_coord_to_screen_coord /home/strajder/src/linije/linije.c /^labyrinth_coord_to_screen_coord(const int x, const int y, const float startx,$/;" f typeref:typename:void +labyrinth_coord_to_screen_coordF /home/strajder/src/lav-sdl/lav-sdl.c /^labyrinth_coord_to_screen_coordF(const float x, const float y,$/;" f typeref:typename:void +labyrinth_coord_to_screen_coordF /home/strajder/src/linije/linije.c /^labyrinth_coord_to_screen_coordF(const float x, const float y,$/;" f typeref:typename:void +left /home/strajder/src/linije/linije.c /^ struct Cell* left;$/;" m struct:Cell typeref:struct:Cell * file: +left /home/strajder/tmp/pathfind/pf2.c /^ struct Cell* left;$/;" m struct:Cell typeref:struct:Cell * file: +load_labyrinth /home/strajder/src/lav-sdl/lav-sdl.c /^load_labyrinth(const char* pathname)$/;" f typeref:typename:int +load_labyrinth /home/strajder/src/linije/linije.c /^load_labyrinth(const char* pathname)$/;" f typeref:typename:int +load_textures /home/strajder/src/lav-sdl/lav-sdl.c /^load_textures(void)$/;" f typeref:typename:int +load_textures /home/strajder/src/linije/linije.c /^load_textures(struct State* state)$/;" f typeref:typename:int +load_textures /home/strajder/src/linije/linije.c /^load_textures(void)$/;" f typeref:typename:int +location_pointer /home/strajder/src/lav-sdl/lav-sdl.c /^static int location_pointer = 0;$/;" v typeref:typename:int file: +location_pointer /home/strajder/src/linije/linije.c /^ int location_pointer = 0;$/;" m struct:State typeref:typename:int file: +location_pointer /home/strajder/src/linije/linije.c /^ int location_pointer = 0;$/;" m struct:State typeref:typename:int file: +location_pointer /home/strajder/src/linije/linije.c /^ int location_pointer = 0;$/;" m struct:State typeref:typename:int file: +location_pointer /home/strajder/src/linije/linije.c /^ int location_pointer;$/;" m struct:State typeref:typename:int file: +location_pointer /home/strajder/src/linije/linije.c /^static int location_pointer = 0;$/;" v typeref:typename:int file: +location_pop /home/strajder/src/lav-sdl/lav-sdl.c /^location_pop(SDL_Point* location)$/;" f typeref:typename:int +location_pop /home/strajder/src/linije/linije.c /^location_pop(SDL_Point* location)$/;" f typeref:typename:int +location_pop /home/strajder/src/linije/linije.c /^location_pop(struct State* state, SDL_Point* location)$/;" f typeref:typename:int +location_push /home/strajder/src/lav-sdl/lav-sdl.c /^location_push(const SDL_Point* location)$/;" f typeref:typename:void +location_push /home/strajder/src/linije/linije.c /^location_push(const SDL_Point* location)$/;" f typeref:typename:void +location_push /home/strajder/src/linije/linije.c /^location_push(struct State* state, const SDL_Point* location)$/;" f typeref:typename:void +location_stack /home/strajder/src/lav-sdl/lav-sdl.c /^static SDL_Point* location_stack = NULL;$/;" v typeref:typename:SDL_Point * file: +location_stack /home/strajder/src/linije/linije.c /^ SDL_Point* location_stack = NULL;$/;" m struct:State typeref:typename:SDL_Point * file: +location_stack /home/strajder/src/linije/linije.c /^ SDL_Point* location_stack = NULL;$/;" m struct:State typeref:typename:SDL_Point * file: +location_stack /home/strajder/src/linije/linije.c /^ SDL_Point* location_stack;$/;" m struct:State typeref:typename:SDL_Point * file: +location_stack /home/strajder/src/linije/linije.c /^static SDL_Point* location_stack = NULL;$/;" v typeref:typename:SDL_Point * file: +main /home/strajder/src/lav-sdl/lav-sdl.c /^main(int argc, char** argv)$/;" f typeref:typename:int +main /home/strajder/src/linije/linije.c /^main(int argc, char** argv)$/;" f typeref:typename:int +main /home/strajder/tmp/pathfind/pf2.c /^main(void)$/;" f typeref:typename:int +mark_path /home/strajder/src/linije/linije.c /^mark_path(struct Cell* c)$/;" f typeref:typename:void +mark_path /home/strajder/tmp/pathfind/pf2.c /^mark_path(struct Cell* c)$/;" f typeref:typename:void +mark_path_forward /home/strajder/src/linije/linije.c /^mark_path_forward(struct Cell* c)$/;" f typeref:typename:void +mode /home/strajder/src/linije/linije.c /^ int mode;$/;" m struct:State typeref:typename:int file: +next_step /home/strajder/src/lav-sdl/lav-sdl.c /^next_step(void)$/;" f typeref:typename:void +next_step /home/strajder/src/linije/linije.c /^next_step(struct State* state)$/;" f typeref:typename:void +next_step /home/strajder/src/linije/linije.c /^next_step(void)$/;" f typeref:typename:void +num_sampler_bindings /usr/local/include/SDL3/SDL_render.h /^ Sint32 num_sampler_bindings; \/**< The number of additional fragment samplers to bind whe/;" m struct:SDL_GPURenderStateDesc typeref:typename:Sint32 +num_storage_buffers /usr/local/include/SDL3/SDL_render.h /^ Sint32 num_storage_buffers; \/**< The number of storage buffers to bind when this render /;" m struct:SDL_GPURenderStateDesc typeref:typename:Sint32 +num_storage_textures /usr/local/include/SDL3/SDL_render.h /^ Sint32 num_storage_textures; \/**< The number of storage textures to bind when this rende/;" m struct:SDL_GPURenderStateDesc typeref:typename:Sint32 +passable /home/strajder/src/lav-sdl/lav-sdl.c /^passable(const int x, const int y)$/;" f typeref:typename:int +passable /home/strajder/src/linije/linije.c /^passable(const int x, const int y)$/;" f typeref:typename:int +passable /home/strajder/src/linije/linije.c /^passable(const struct State* state, const int x, const int y)$/;" f typeref:typename:int +path /home/strajder/src/linije/linije.c /^ int path;$/;" m struct:Cell typeref:typename:int file: +path /home/strajder/tmp/pathfind/pf2.c /^ int path;$/;" m struct:Cell typeref:typename:int file: +path_dist /home/strajder/src/linije/linije.c /^ int path_dist; \/* length of shortest path so far *\/$/;" m struct:Cell typeref:typename:int file: +path_dist /home/strajder/src/linije/linije.c /^ int path_dist; \/* length of shortest path so far *\/$/;" m struct:Cell typeref:typename:int file: +path_end /home/strajder/src/linije/linije.c /^ struct Cell* path_end = NULL;$/;" m struct:State typeref:struct:Cell * file: +path_end /home/strajder/src/linije/linije.c /^ struct Cell* path_end = NULL;$/;" m struct:State typeref:struct:Cell * file: +path_end /home/strajder/src/linije/linije.c /^ struct Cell* path_end = NULL;$/;" m struct:State typeref:struct:Cell * file: +path_end /home/strajder/src/linije/linije.c /^ struct Cell* path_end;$/;" m struct:State typeref:struct:Cell * file: +path_end /home/strajder/src/linije/linije.c /^static struct Cell* path_end = NULL;$/;" v typeref:struct:Cell * file: +path_end /home/strajder/src/linije/linije.c /^static struct Cell* path_end = NULL;$/;" v typeref:struct:Cell * file: +path_next /home/strajder/src/linije/linije.c /^ struct Cell* path_next; \/* next cell in shortest path *\/$/;" m struct:Cell typeref:struct:Cell * file: +path_next /home/strajder/src/linije/linije.c /^ struct Cell* path_next; \/* next cell in shortest path *\/$/;" m struct:Cell typeref:struct:Cell * file: +path_source /home/strajder/src/linije/linije.c /^ struct Cell* path_source; \/* previous cell in shortest path *\/$/;" m struct:Cell typeref:struct:Cell * file: +path_start /home/strajder/src/linije/linije.c /^ struct Cell* path_start = NULL;$/;" m struct:State typeref:struct:Cell * file: +path_start /home/strajder/src/linije/linije.c /^ struct Cell* path_start = NULL;$/;" m struct:State typeref:struct:Cell * file: +path_start /home/strajder/src/linije/linije.c /^ struct Cell* path_start;$/;" m struct:State typeref:struct:Cell * file: +path_start /home/strajder/src/linije/linije.c /^static struct Cell* path_start = NULL;$/;" v typeref:struct:Cell * file: +pf_initialize /home/strajder/src/linije/linije.c /^pf_initialize(struct Cell* c, const struct Coord* coord)$/;" f typeref:typename:void +pf_initialize /home/strajder/tmp/pathfind/pf2.c /^pf_initialize(struct Cell* c, const struct Coord* coord)$/;" f typeref:typename:void +pointer /home/strajder/src/lav-sdl/lav-sdl.c /^static SDL_FPoint pointer;$/;" v typeref:typename:SDL_FPoint file: +pointer /home/strajder/src/linije/linije.c /^ SDL_FPoint pointer;$/;" m struct:State typeref:typename:SDL_FPoint file: +pointer /home/strajder/src/linije/linije.c /^ SDL_FPoint pointer;$/;" m struct:State typeref:typename:SDL_FPoint file: +pointer /home/strajder/src/linije/linije.c /^static SDL_FPoint pointer;$/;" v typeref:typename:SDL_FPoint file: +pos /home/strajder/src/linije/linije.c /^ SDL_FPoint pos;$/;" m struct:AnimationState typeref:typename:SDL_FPoint file: +position /home/strajder/src/lav-sdl/lav-sdl.c /^ SDL_FPoint position;$/;" m struct:AnimationState typeref:typename:SDL_FPoint file: +position /home/strajder/src/linije/linije.c /^ SDL_FPoint position;$/;" m struct:AnimationState typeref:typename:SDL_FPoint file: +position /usr/local/include/SDL3/SDL_render.h /^ SDL_FPoint position; \/**< Vertex position, in SDL_Renderer coordinates *\/$/;" m struct:SDL_Vertex typeref:typename:SDL_FPoint +print_cell /home/strajder/tmp/pathfind/pf2.c /^print_cell(const struct Cell* c, const char* name)$/;" f typeref:typename:void +print_coord /home/strajder/tmp/pathfind/pf2.c /^print_coord(const struct Coord* coord)$/;" f typeref:typename:void +print_debug /home/strajder/src/lav-sdl/lav-sdl.c /^print_debug(const char* fmt, ...)$/;" f typeref:typename:void +print_debug /home/strajder/src/linije/linije.c /^print_debug(const char* fmt, ...)$/;" f typeref:typename:void +print_error /home/strajder/src/lav-sdl/lav-sdl.c /^print_error(const char* fmt, ...)$/;" f typeref:typename:void +print_error /home/strajder/src/linije/linije.c /^print_error(const char* fmt, ...)$/;" f typeref:typename:void +print_matrix /home/strajder/src/linije/linije.c /^print_matrix(const struct Cell* M)$/;" f typeref:typename:void +print_matrix /home/strajder/tmp/pathfind/pf2.c /^print_matrix(const struct Cell* M)$/;" f typeref:typename:void +print_path /home/strajder/src/linije/linije.c /^print_path(struct Cell* c)$/;" f typeref:typename:void +redraw /home/strajder/src/lav-sdl/lav-sdl.c /^static int redraw = 1;$/;" v typeref:typename:int file: +redraw /home/strajder/src/linije/linije.c /^ int redraw = 1;$/;" m struct:State typeref:typename:int file: +redraw /home/strajder/src/linije/linije.c /^ int redraw = 1;$/;" m struct:State typeref:typename:int file: +redraw /home/strajder/src/linije/linije.c /^ int redraw = 1;$/;" m struct:State typeref:typename:int file: +redraw /home/strajder/src/linije/linije.c /^ int redraw;$/;" m struct:State typeref:typename:int file: +redraw /home/strajder/src/linije/linije.c /^static int redraw = 1;$/;" v typeref:typename:int file: +redraw /home/strajder/src/linije/linije.c /^static int redraw = 1;$/;" v typeref:typename:int file: +refcount /usr/local/include/SDL3/SDL_render.h /^ int refcount; \/**< Application reference count, used when freeing texture *\/$/;" m struct:SDL_Texture typeref:typename:int +renderer /home/strajder/src/lav-sdl/lav-sdl.c /^static SDL_Renderer* renderer = NULL;$/;" v typeref:typename:SDL_Renderer * file: +renderer /home/strajder/src/linije/linije.c /^ SDL_Renderer* renderer = NULL;$/;" m struct:State typeref:typename:SDL_Renderer * file: +renderer /home/strajder/src/linije/linije.c /^ SDL_Renderer* renderer = NULL;$/;" m struct:State typeref:typename:SDL_Renderer * file: +renderer /home/strajder/src/linije/linije.c /^ SDL_Renderer* renderer = NULL;$/;" m struct:State typeref:typename:SDL_Renderer * file: +renderer /home/strajder/src/linije/linije.c /^ SDL_Renderer* renderer;$/;" m struct:State typeref:typename:SDL_Renderer * file: +renderer /home/strajder/src/linije/linije.c /^static SDL_Renderer* renderer = NULL;$/;" v typeref:typename:SDL_Renderer * file: +renderer /home/strajder/src/linije/linije.c /^static SDL_Renderer* renderer = NULL;$/;" v typeref:typename:SDL_Renderer * file: +reset /home/strajder/src/lav-sdl/lav-sdl.c /^reset(void)$/;" f typeref:typename:void +reset /home/strajder/src/linije/linije.c /^reset(struct State* state)$/;" f typeref:typename:void +reset /home/strajder/src/linije/linije.c /^reset(void)$/;" f typeref:typename:void +reset_path /home/strajder/src/linije/linije.c /^reset_path(struct Cell* c)$/;" f typeref:typename:void +reset_path /home/strajder/src/linije/linije.c /^reset_path(struct Cell* grid)$/;" f typeref:typename:void +reset_path /home/strajder/src/linije/linije.c /^reset_path(struct Cell* tail)$/;" f typeref:typename:void +reset_path /home/strajder/src/linije/linije.c /^reset_path(void)$/;" f typeref:typename:void +right /home/strajder/src/linije/linije.c /^ struct Cell* right;$/;" m struct:Cell typeref:struct:Cell * file: +right /home/strajder/tmp/pathfind/pf2.c /^ struct Cell* right;$/;" m struct:Cell typeref:struct:Cell * file: +running /home/strajder/src/lav-sdl/lav-sdl.c /^static int running = 1;$/;" v typeref:typename:int file: +running /home/strajder/src/linije/linije.c /^ int running = 1;$/;" m struct:State typeref:typename:int file: +running /home/strajder/src/linije/linije.c /^ int running = 1;$/;" m struct:State typeref:typename:int file: +running /home/strajder/src/linije/linije.c /^ int running = 1;$/;" m struct:State typeref:typename:int file: +running /home/strajder/src/linije/linije.c /^ int running;$/;" m struct:State typeref:typename:int file: +running /home/strajder/src/linije/linije.c /^static int running = 1;$/;" v typeref:typename:int file: +running /home/strajder/src/linije/linije.c /^static int running = 1;$/;" v typeref:typename:int file: +sampler_bindings /usr/local/include/SDL3/SDL_render.h /^ const SDL_GPUTextureSamplerBinding *sampler_bindings; \/**< Additional fragment samplers t/;" m struct:SDL_GPURenderStateDesc typeref:typename:const SDL_GPUTextureSamplerBinding * +score /home/strajder/src/linije/linije.c /^ unsigned int score = 0;$/;" m struct:State typeref:typename:unsigned int file: +score /home/strajder/src/linije/linije.c /^ unsigned int score = 0;$/;" m struct:State typeref:typename:unsigned int file: +score /home/strajder/src/linije/linije.c /^ unsigned int score = 0;$/;" m struct:State typeref:typename:unsigned int file: +score /home/strajder/src/linije/linije.c /^ unsigned int score;$/;" m struct:State typeref:typename:unsigned int file: +score /home/strajder/src/linije/linije.c /^static unsigned int score = 0;$/;" v typeref:typename:unsigned int file: +score /home/strajder/src/linije/linije.c /^static unsigned int score = 0;$/;" v typeref:typename:unsigned int file: +score /home/strajder/src/linije/linije.c /^static unsigned int score = 0;$/;" v typeref:typename:unsigned int file: +screen_coord_to_grid_coord /home/strajder/src/linije/linije.c /^screen_coord_to_grid_coord(const int x, const int y, const float startx,$/;" f typeref:typename:void +screen_coord_to_grid_coord /home/strajder/src/linije/linije.c /^screen_coord_to_grid_coord(struct State* state, const int x, const int y, const float startx,$/;" f typeref:typename:void +screen_coord_to_grid_coord /home/strajder/src/linije/linije.c /^screen_coord_to_grid_coord(struct State* state, const int x, const int y,$/;" f typeref:typename:void +screen_coord_to_grid_coordF /home/strajder/src/linije/linije.c /^screen_coord_to_grid_coordF(const float x, const float y, const float startx,$/;" f typeref:typename:void +screen_coord_to_grid_coordF /home/strajder/src/linije/linije.c /^screen_coord_to_grid_coordF(const float x, const float y,$/;" f typeref:typename:void +screen_coord_to_grid_coordF /home/strajder/src/linije/linije.c /^screen_coord_to_grid_coordF(struct State* state, const float x, const float y, const float start/;" f typeref:typename:void +screen_coord_to_grid_coordF /home/strajder/src/linije/linije.c /^screen_coord_to_grid_coordF(struct State* state, const float x, const float y,$/;" f typeref:typename:void +screen_height /home/strajder/src/lav-sdl/lav-sdl.c /^static int screen_height = DEFAULT_HEIGHT;$/;" v typeref:typename:int file: +screen_height /home/strajder/src/linije/linije.c /^ int screen_height = DEFAULT_HEIGHT;$/;" m struct:State typeref:typename:int file: +screen_height /home/strajder/src/linije/linije.c /^ int screen_height = DEFAULT_HEIGHT;$/;" m struct:State typeref:typename:int file: +screen_height /home/strajder/src/linije/linije.c /^ int screen_height = DEFAULT_HEIGHT;$/;" m struct:State typeref:typename:int file: +screen_height /home/strajder/src/linije/linije.c /^ int screen_height;$/;" m struct:State typeref:typename:int file: +screen_height /home/strajder/src/linije/linije.c /^static int screen_height = DEFAULT_HEIGHT;$/;" v typeref:typename:int file: +screen_height /home/strajder/src/linije/linije.c /^static int screen_height = DEFAULT_HEIGHT;$/;" v typeref:typename:int file: +screen_width /home/strajder/src/lav-sdl/lav-sdl.c /^static int screen_width = DEFAULT_WIDTH; \/* Logical *\/$/;" v typeref:typename:int file: +screen_width /home/strajder/src/linije/linije.c /^ int screen_width = DEFAULT_WIDTH; \/* Logical *\/$/;" m struct:State typeref:typename:int file: +screen_width /home/strajder/src/linije/linije.c /^ int screen_width = DEFAULT_WIDTH; \/* Logical *\/$/;" m struct:State typeref:typename:int file: +screen_width /home/strajder/src/linije/linije.c /^ int screen_width = DEFAULT_WIDTH; \/* Logical *\/$/;" m struct:State typeref:typename:int file: +screen_width /home/strajder/src/linije/linije.c /^ int screen_width; \/* Logical *\/$/;" m struct:State typeref:typename:int file: +screen_width /home/strajder/src/linije/linije.c /^static int screen_width = DEFAULT_WIDTH; \/* Logical *\/$/;" v typeref:typename:int file: +screen_width /home/strajder/src/linije/linije.c /^static int screen_width = DEFAULT_WIDTH; \/* Logical *\/$/;" v typeref:typename:int file: +selected /home/strajder/src/linije/linije.c /^static SDL_FPoint selected;$/;" v typeref:typename:SDL_FPoint file: +selected /home/strajder/src/linije/linije.c /^static SDL_Point selected;$/;" v typeref:typename:SDL_Point file: +selection_end /home/strajder/src/linije/linije.c /^ SDL_FPoint selection_start, selection_end;$/;" m struct:State typeref:typename:SDL_FPoint file: +selection_end /home/strajder/src/linije/linije.c /^ SDL_FPoint selection_start, selection_end;$/;" m struct:State typeref:typename:SDL_FPoint file: +selection_end /home/strajder/src/linije/linije.c /^static SDL_FPoint selection_start, selection_end;$/;" v typeref:typename:SDL_FPoint file: +selection_start /home/strajder/src/linije/linije.c /^ SDL_FPoint selection_start, selection_end;$/;" m struct:State typeref:typename:SDL_FPoint file: +selection_start /home/strajder/src/linije/linije.c /^ SDL_FPoint selection_start, selection_end;$/;" m struct:State typeref:typename:SDL_FPoint file: +selection_start /home/strajder/src/linije/linije.c /^static SDL_FPoint selection_start, selection_end;$/;" v typeref:typename:SDL_FPoint file: +short_dist /home/strajder/src/linije/linije.c /^ int short_dist; \/* length of shortest path so far *\/$/;" m struct:Cell typeref:typename:int file: +short_dist /home/strajder/tmp/pathfind/pf2.c /^ int short_dist; \/* length of shortest path so far *\/$/;" m struct:Cell typeref:typename:int file: +short_source /home/strajder/src/linije/linije.c /^ struct Cell* short_source; \/* previous cell in shortest path *\/$/;" m struct:Cell typeref:struct:Cell * file: +short_source /home/strajder/tmp/pathfind/pf2.c /^ struct Cell* short_source; \/* previous cell in shortest path *\/$/;" m struct:Cell typeref:struct:Cell * file: +sprites /home/strajder/src/lav-sdl/lav-sdl.c /^static SDL_Texture* sprites = NULL;$/;" v typeref:typename:SDL_Texture * file: +sprites /home/strajder/src/linije/linije.c /^ SDL_Texture* sprites = NULL;$/;" m struct:State typeref:typename:SDL_Texture * file: +sprites /home/strajder/src/linije/linije.c /^ SDL_Texture* sprites = NULL;$/;" m struct:State typeref:typename:SDL_Texture * file: +sprites /home/strajder/src/linije/linije.c /^ SDL_Texture* sprites = NULL;$/;" m struct:State typeref:typename:SDL_Texture * file: +sprites /home/strajder/src/linije/linije.c /^ SDL_Texture* sprites;$/;" m struct:State typeref:typename:SDL_Texture * file: +sprites /home/strajder/src/linije/linije.c /^static SDL_Texture* sprites = NULL;$/;" v typeref:typename:SDL_Texture * file: +start /home/strajder/src/lav-sdl/lav-sdl.c /^static SDL_Point hero, start, end;$/;" v typeref:typename:SDL_Point file: +start /home/strajder/src/linije/linije.c /^ SDL_FPoint start;$/;" m struct:AnimationState typeref:typename:SDL_FPoint file: +start /home/strajder/src/linije/linije.c /^ SDL_Point start;$/;" m struct:AnimationState typeref:typename:SDL_Point file: +start /home/strajder/src/linije/linije.c /^static SDL_Point hero, start, end;$/;" v typeref:typename:SDL_Point file: +starting /home/strajder/src/linije/linije.c /^ int starting;$/;" m struct:Cell typeref:typename:int file: +starting /home/strajder/tmp/pathfind/pf2.c /^ int starting;$/;" m struct:Cell typeref:typename:int file: +state /home/strajder/src/lav-sdl/lav-sdl.c /^static int state = STATE_SEARCHING_PAUSED;$/;" v typeref:typename:int file: +state /home/strajder/src/linije/linije.c /^ int state = STATE_IDLE;$/;" m struct:State typeref:typename:int file: +state /home/strajder/src/linije/linije.c /^ int state = STATE_IDLE;$/;" m struct:State typeref:typename:int file: +state /home/strajder/src/linije/linije.c /^ int state = STATE_IDLE;$/;" m struct:State typeref:typename:int file: +state /home/strajder/src/linije/linije.c /^ int state;$/;" m struct:State typeref:typename:int file: +state /home/strajder/src/linije/linije.c /^static int state = STATE_IDLE;$/;" v typeref:typename:int file: +state /home/strajder/src/linije/linije.c /^static int state = STATE_SEARCHING_PAUSED;$/;" v typeref:typename:int file: +state_descriptions /home/strajder/src/lav-sdl/lav-sdl.c /^const char* state_descriptions[] = {$/;" v typeref:typename:const char * [] +state_descriptions /home/strajder/src/linije/linije.c /^const char* state_descriptions[] = {$/;" v typeref:typename:const char * [] +step /home/strajder/src/lav-sdl/lav-sdl.c /^ int step;$/;" m struct:AnimationState typeref:typename:int file: +step /home/strajder/src/linije/linije.c /^ int step;$/;" m struct:AnimationState typeref:typename:int file: +step_animation /home/strajder/src/lav-sdl/lav-sdl.c /^step_animation(void)$/;" f typeref:typename:void +step_animation /home/strajder/src/linije/linije.c /^step_animation(struct State* state)$/;" f typeref:typename:void +step_animation /home/strajder/src/linije/linije.c /^step_animation(void)$/;" f typeref:typename:void +storage_buffers /usr/local/include/SDL3/SDL_render.h /^ SDL_GPUBuffer *const *storage_buffers; \/**< Storage buffers to bind when this render s/;" m struct:SDL_GPURenderStateDesc typeref:typename:SDL_GPUBuffer * const * +storage_textures /usr/local/include/SDL3/SDL_render.h /^ SDL_GPUTexture *const *storage_textures; \/**< Storage textures to bind when this render /;" m struct:SDL_GPURenderStateDesc typeref:typename:SDL_GPUTexture * const * +ter12_texture /home/strajder/src/lav-sdl/lav-sdl.c /^static SDL_Texture* ter12_texture = NULL;$/;" v typeref:typename:SDL_Texture * file: +ter12_texture /home/strajder/src/linije/linije.c /^ SDL_Texture* ter12_texture = NULL;$/;" m struct:State typeref:typename:SDL_Texture * file: +ter12_texture /home/strajder/src/linije/linije.c /^ SDL_Texture* ter12_texture = NULL;$/;" m struct:State typeref:typename:SDL_Texture * file: +ter12_texture /home/strajder/src/linije/linije.c /^ SDL_Texture* ter12_texture;$/;" m struct:State typeref:typename:SDL_Texture * file: +ter12_texture /home/strajder/src/linije/linije.c /^static SDL_Texture* ter12_texture = NULL;$/;" v typeref:typename:SDL_Texture * file: +tex_coord /usr/local/include/SDL3/SDL_render.h /^ SDL_FPoint tex_coord; \/**< Normalized texture coordinates, if needed *\/$/;" m struct:SDL_Vertex typeref:typename:SDL_FPoint +text_scale_factor /home/strajder/src/lav-sdl/lav-sdl.c /^static float text_scale_factor = 2.0f;$/;" v typeref:typename:float file: +text_scale_factor /home/strajder/src/linije/linije.c /^ float text_scale_factor = 2.0f;$/;" m struct:State typeref:typename:float file: +text_scale_factor /home/strajder/src/linije/linije.c /^ float text_scale_factor = 2.0f;$/;" m struct:State typeref:typename:float file: +text_scale_factor /home/strajder/src/linije/linije.c /^ float text_scale_factor = 2.0f;$/;" m struct:State typeref:typename:float file: +text_scale_factor /home/strajder/src/linije/linije.c /^ float text_scale_factor;$/;" m struct:State typeref:typename:float file: +text_scale_factor /home/strajder/src/linije/linije.c /^static float text_scale_factor = 2.0f;$/;" v typeref:typename:float file: +try_load /home/strajder/src/lav-sdl/lav-sdl.c /^try_load(const char* filename)$/;" f typeref:typename:SDL_Surface * +try_load /home/strajder/src/linije/linije.c /^try_load(const char* filename)$/;" f typeref:typename:SDL_Surface * +up /home/strajder/src/linije/linije.c /^ struct Cell* up;$/;" m struct:Cell typeref:struct:Cell * file: +up /home/strajder/tmp/pathfind/pf2.c /^ struct Cell* up;$/;" m struct:Cell typeref:struct:Cell * file: +version /usr/local/include/SDL3/SDL_render.h /^ Uint32 version; \/**< the version of this interface *\/$/;" m struct:SDL_GPURenderStateDesc typeref:typename:Uint32 +w /usr/local/include/SDL3/SDL_render.h /^ int w; \/**< The width of the texture, read-only. *\/$/;" m struct:SDL_Texture typeref:typename:int +width /home/strajder/src/lav-sdl/lav-sdl.c /^ int width;$/;" m struct:Labyrinth typeref:typename:int file: +width /home/strajder/src/linije/linije.c /^ int width;$/;" m struct:Grid typeref:typename:int file: +width /home/strajder/src/linije/linije.c /^ int width;$/;" m struct:Labyrinth typeref:typename:int file: +window /home/strajder/src/lav-sdl/lav-sdl.c /^static SDL_Window* window = NULL;$/;" v typeref:typename:SDL_Window * file: +window /home/strajder/src/linije/linije.c /^ SDL_Window* window = NULL;$/;" m struct:State typeref:typename:SDL_Window * file: +window /home/strajder/src/linije/linije.c /^ SDL_Window* window = NULL;$/;" m struct:State typeref:typename:SDL_Window * file: +window /home/strajder/src/linije/linije.c /^ SDL_Window* window = NULL;$/;" m struct:State typeref:typename:SDL_Window * file: +window /home/strajder/src/linije/linije.c /^ SDL_Window* window;$/;" m struct:State typeref:typename:SDL_Window * file: +window /home/strajder/src/linije/linije.c /^static SDL_Window* window = NULL;$/;" v typeref:typename:SDL_Window * file: +x /home/strajder/src/linije/linije.c /^ int x;$/;" m struct:Coord typeref:typename:int file: +x /home/strajder/tmp/pathfind/pf2.c /^ int x;$/;" m struct:Coord typeref:typename:int file: +y /home/strajder/src/linije/linije.c /^ int y;$/;" m struct:Coord typeref:typename:int file: +y /home/strajder/tmp/pathfind/pf2.c /^ int y;$/;" m struct:Coord typeref:typename:int file: diff --git a/ter12.png b/ter12.png Бинарне датотеке Ñ�е разликују. diff --git a/ter12.xcf.xz b/ter12.xcf.xz Бинарне датотеке Ñ�е разликују. diff --git a/version b/version @@ -0,0 +1 @@ +0.1 diff --git a/version.h.in b/version.h.in @@ -0,0 +1,7 @@ +/* This program is licensed under the terms of GNU GPL v3 or (at your option) + * any later version. Copyright (C) 2025 Страхиња Радић. + * See the file LICENSE for exact copyright and license details. */ + +#define PROGRAM_NAME "linije" +#define DATE "%DATE%" +#define VERSION "%VERSION%"