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  + ~<mh.h +> + +10  + ~<dg.h +> + +11  + ~<dio.h +> + +12  + ~<dlib.h +> + +13  + ~<time.h +> + +14  + ~<unid.h +> + +16  + ~"lol.h +" + +17  + ~"vsi.h +" + +20  + #ANIM_SPEED + 100 + + ) + +23  + #FPS + 60 + + ) + +24  + #ANIM_STEPS + ( +ANIM_SPEED + * +FPS + / 1000) + + ) + +26  + #BUFSIZE + 4096 + + ) + +27  + #CELL_SIZE + 20 + + ) + +28  + #DEFAULT_WIDTH + 1280 + + ) + +29  + #DEFAULT_HEIGHT + 720 + + ) + +30  + #HELP_DIALOG_WIDTH + 900 + + ) + +31  + #HELP_DIALOG_HEIGHT + 450 + + ) + +32  + #GRID_WIDTH + 15 + + ) + +33  + #GRID_HEIGHT + 15 + + ) + +34  + #LOCATION_STACK_MAX + ( +GRID_WIDTH + * +GRID_HEIGHT +) + + ) + +35  + #MIN_POP_LEN + 5 + + ) + +37  + #POP_STRING_CELL_VALUE + 100 + + ) + +40  + #PRINT_BUFSIZE + 4096 + + ) + +41  + #PROGNAME + "lije" + + ) + +42  + #TER12_WIDTH + 6 + + ) + +43  + #TER12_HEIGHT + 12 + + ) + +44  + #WIN_TITLE + "Lije" + + ) + +46  + #MIN +( +a +, +b +((< (b)? (a: (b)) + + ) + +47  + #MAX +( +a +, +b +((> (b)? (a: (b)) + + ) + +48  + #INDEX +( +x +, +y +((y* +GRID_WIDTH + + (x)) + + ) + +49  + #INDEXFI +( +x +, +y +((() + `o +(y)* +GRID_WIDTH + + (()o(x))) + + ) + +50  + #VALNAME +( +n +[n] = #n + + ) + +54 + mCELL_EMPTY +, + +55 + mCELL_RED +, + +56 + mCELL_BLUE +, + +57 + mCELL_GREEN +, + +58 + mCELL_PURPLE +, + +59 + mCELL_ORANGE +, + +60 + mCELL_SELECTED + + +64 + mSTATE_IDLE +, + +65 + mSTATE_SELECTION +, + +66 + mSTATE_MOVING +, + +67 + mSTATE_FAILURE +, + +68 + mSTATE_SUCCESS + + +71 cڡ * + g_mes +[] = { + +72 +VALNAME +( +CELL_EMPTY +), + +73 +VALNAME +( +CELL_RED +), + +74 +VALNAME +( +CELL_BLUE +), + +75 +VALNAME +( +CELL_GREEN +), + +76 +VALNAME +( +CELL_PURPLE +), + +77 +VALNAME +( +CELL_ORANGE +), + +78 +VALNAME +( +CELL_SELECTED +), + +81 cڡ  + gcheck_five_ds +[][4] = { + +88 cڡ * + ge_destis +[] = { + +96 cڡ * + ghp_xt +[] = { + +99 "Vsi " +VERSION +, + +111 +NULL + + +115  + sAnimiS + { + +116 +SDL_FPot + + mt +; + +117 +SDL_FPot + + mposi +; + +118 +SDL_FPot + + md +; + +119 +SDL_FPot + + md +; + +120  + maive +; + +121  + m +; + +122  + mf_ +; + +125  + sCl + { + +126  + memy +; + +127  + mtg +; + +128  + mdg +; + +129  + mth +; + +130 +SDL_FPot + + mcods +; + +131  + mcڋs +; + +132  +Cl +* + m +; + +133  +Cl +* + mup +; + +134  +Cl +* + mright +; + +135  +Cl +* + mdown +; + +136  +Cl +* + mth_sour +; + +137  +Cl +* + mth_xt +; + +138  + mth_di +; + +141  + sS + { + +142  +AnimiS + + mimi +; + +143  +Cl +* + mgrid +; + +144  + mloti_por +; + +145 +SDL_Pot +* + mloti_ack +; + +146 +SDL_FPot + + mpor +; + +147  + m_s_ +; + +148  + mdiy_width +; + +149  + mdiy_height +; + +150  + mfu_sn +; + +151  + mhp_shown +; + +152  + mmode +; + +153  +Cl +* + mth_t +; + +154  +Cl +* + mth_d +; + +155  + mdw +; + +156 +SDL_Rd +* + mnd +; + +157  + mrušg +; + +158  + msn_width +; + +159  + msn_height +; + +160  + msce +; + +161 +SDL_FPot + + mi_t +, + mi_d +; + +162 +SDL_Textu +* + mres +; + +163 +SDL_Textu +* + mr12_xtu +; + +164 +SDL_Textu +* + mbackground +; + +165 +SDL_Wdow +* + mwdow +; + +166  + mxt_s_ +; + +169  +assign_potFF +(cڡ +SDL_FPot +* +om +, SDL_FPot* +to +); + +170  +assign_potIF +(cڡ +SDL_Pot +* +om +, +SDL_FPot +* +to +); + +171  +assign_pot_xyIF +(cڡ  +x +, cڡ  +y +, +SDL_FPot +* +to +); + +172  +lcuϋ_d +( +S +* +e +); + +173  +lcuϋ_grid_ig +(cڡ  +S +* +e +, * +sx +, * +sy +); + +174  +lcuϋ_diy_size +( +S +* +e +); + +175  +check_five +( +S +* +e +,  +Cl +* +c +); + +176  +nup +( +S +* +e +); + +177  +do_ex +(cڡ  +code +,  +S +* +e +); + +178  +dw +( +S +* +e +); + +179  +dw_background +( +S +* +e +, +SDL_FRe +* +bg_ +); + +180  +dw_hp_dlog +( +S +* +e +); + +181  +dw_xt +( +S +* +e +, cڡ  +x +, cڡ  +y +, + +182 cڡ  +ft_width +, cڡ  +ft_height +, +SDL_Textu +* +ft_x +, + +183 cڡ * +xt +, ...); + +184  +fl_t +( +S +* +e +); + +185  +fd_sh܋_th +( +Cl +* +c +, Cl* +sour +, cڡ  +di +); + +186  +g_re_xy +(cڡ  + +, * +x +, * +y +); + +187  +grid_cod_to_sn_cod +(cڡ  +S +* +e +, cڡ  +x +, + +188 cڡ  +y +, cڡ  +tx +, cڡ  +ty +, * +to_x +, + +189 * +to_y +); + +190  +grid_cod_to_sn_codF +(cڡ  +S +* +e +, cڡ  +x +, + +191 cڡ  +y +, cڡ  +tx +, cڡ  +ty +, * +to_x +, + +192 * +to_y +); + +193  +hd_ick +( +S +* +e +); + +194  +hd_evt +( +S +* +e +, +SDL_Evt +* +evt +); + +195  +_ +( +Cl +* +c +, cڡ +SDL_FPot +* +cods +); + +196  +_e +( +S +* +e +); + +197  +ld_xtus +( +S +* +e +); + +198  +loti_p +( +S +* +e +, +SDL_Pot +* +loti +); + +199  +loti_push +( +S +* +e +, cڡ +SDL_Pot +* +loti +); + +200  +mk_th +( +Cl +* +c +); + +201  +xt_ +( +S +* +e +); + +202  +sb +(cڡ  +S +* +e +, cڡ  +x +, cڡ  +y +); + +203  +t_mrix +(cڡ  +Cl +* +M +); + +204  +t_th +( +Cl +* +c +); + +205  +t +( +S +* +e +); + +206  +t_th +( +Cl +* +grid +); + +207  +sn_cod_to_grid_cod +( +S +* +e +, cڡ  +x +, cڡ  +y +, + +208 cڡ  +tx +, cڡ  +ty +, * +to_x +, * +to_y +); + +209  +sn_cod_to_grid_codF +( +S +* +e +, cڡ  +x +, + +210 cڡ  +y +, cڡ  +tx +, cڡ  +ty +, * +to_x +, + +211 * +to_y +); + +212  +_imi +( +S +* +e +); + +213 +SDL_Sur +* +y_ld +(cڡ * +fame +); + +216 + $assign_potFF +(cڡ +SDL_FPot +* +om +, SDL_FPot* +to +) + +218 + `as +(( +om + ! +NULL +&& ( +to + != NULL)); + +219 +to +-> +x + = () +om +->x; + +220 +to +-> +y + = () +om +->y; + +221 + } +} + +224 + $assign_potIF +(cڡ +SDL_Pot +* +om +, +SDL_FPot +* +to +) + +226 + `as +(( +om + ! +NULL +&& ( +to + != NULL)); + +227 +to +-> +x + = () +om +->x; + +228 +to +-> +y + = () +om +->y; + +229 + } +} + +232 + $assign_pot_xyIF +(cڡ  +x +, cڡ  +y +, +SDL_FPot +* +to +) + +234 + `as +( +to + ! +NULL +); + +235 +to +-> +x + = ()x; + +236 +to +-> +y + = ()y; + +237 + } +} + +240 + $lcuϋ_d +( +S +* +e +) + +242  +AnimiS +* +imi +; + +244 + `as +( +e + ! +NULL +); + +245 +imi + = & +e +->animation; + +246 +imi +-> +d +. +x + + +247 + `bsf +( +imi +-> +d +. +x + -nimi-> +t +.x/ +ANIM_STEPS +; + +248 i( +imi +-> +d +. +x + <nimi-> +t +.x) + +249 +imi +-> +d +. +x + *= -1; + +250 +imi +-> +d +. +y + + +251 + `bsf +( +imi +-> +d +. +y + -nimi-> +t +.y/ +ANIM_STEPS +; + +252 i( +imi +-> +d +. +y + <nimi-> +t +.y) + +253 +imi +-> +d +. +y + *= -1; + +254 + `SDL_LogDebug +( +SDL_LOG_CATEGORY_APPLICATION +, + +255 "lcuϋ_d: (%0.2f, %0.2f)", +imi +-> +d +. +x +, + +256 +imi +-> +d +. +y +); + +257 + } +} + +260 + $lcuϋ_grid_ig +(cڡ  +S +* +e +, * +sx +, * +sy +) + +262  +cx +, +cy +; + +264 + `as +(( +e + ! +NULL +&& ( +sx + !NULL&& ( +sy + != NULL)); + +265 +cx + = +e +-> +sn_width + / 2; + +266 +cy + = +e +-> +sn_height + / 2; + +268 * +sx + = +cx + - ( +e +-> +_s_ + * +GRID_WIDTH + * +CELL_SIZE +) / 2; + +269 * +sy + = +cy + - ( +e +-> +_s_ + * +GRID_HEIGHT + * +CELL_SIZE +) / 2; + +270 + } +} + +273 + $lcuϋ_diy_size +( +S +* +e +) + +275 + `as +( +e + ! +NULL +); + +276 i(! + `SDL_GRdOuutSize +( +e +-> +nd +, &e-> +diy_width +, + +277 & +e +-> +diy_height +)) + +279 + `SDL_LogE +( +SDL_LOG_CATEGORY_ERROR +, + +281 + `do_ex +(1, +e +); + +283 + `SDL_LogDebug +( +SDL_LOG_CATEGORY_APPLICATION +, + +284 "ouudiy size: (%d, %d)", +e +-> +diy_width +, + +285 +e +-> +diy_height +); + +286 + } +} + +289 + $check_five +( +S +* +e +,  +Cl +* +c +) + +291  +Cl +* +cut + = +NULL +; + +292 +SDL_FPot + +t +, +d +; + +293  +x +, +y +, +n +; + +294  +i +; + +296 +i + = 0; + +297 +check_five_lo +: + +298 + `assign_potFF +(& +c +-> +cods +, & +t +); + +299 + `assign_potFF +(& +c +-> +cods +, & +d +); + +300 +x + = +c +-> +cods +.x; + +301 +y + = +c +-> +cods +.y; + +302 + `SDL_LogDebug +( +SDL_LOG_CATEGORY_APPLICATION +, "Deltas: %d, %d", + +303 +check_five_ds +[ +i +][0], check_five_deltas[i][1]); + +304 +n + = 1; + +305 ( +x + >0 && +y + >0&& (x < +GRID_WIDTH + && y < +GRID_HEIGHT +)) + +307 + `SDL_LogDebug +( +SDL_LOG_CATEGORY_APPLICATION +, "A(%d, %d): %s", +x +, + +308 +y +, +_mes +[ +e +-> +grid +[ + `INDEX +( +x +, y)]. +cڋs +]); + +309 i( +e +-> +grid +[ + `INDEX +( +x +, +y +)]. +cڋs + = +c +->contents) + +311 + `assign_pot_xyIF +( +x +, +y +, & +t +); + +312 +n +++; + +316 +x + + +check_five_ds +[ +i +][0]; + +317 +y + + +check_five_ds +[ +i +][1]; + +319 +x + = +c +-> +cods +.x + +check_five_ds +[ +i +][2]; + +320 +y + = +c +-> +cods +.y + +check_five_ds +[ +i +][3]; + +321 + `SDL_LogDebug +( +SDL_LOG_CATEGORY_APPLICATION +, "Deltas: %d, %d", + +322 +check_five_ds +[ +i +][2], check_five_deltas[i][3]); + +323 ( +x + >0 && +y + >0&& (x < +GRID_WIDTH + && y < +GRID_HEIGHT +)) + +325 + `SDL_LogDebug +( +SDL_LOG_CATEGORY_APPLICATION +, "A(%d, %d): %s", +x +, + +326 +y +, +_mes +[ +e +-> +grid +[ + `INDEX +( +x +, y)]. +cڋs +]); + +327 i( +e +-> +grid +[ + `INDEX +( +x +, +y +)]. +cڋs + = +c +->contents) + +329 + `assign_pot_xyIF +( +x +, +y +, & +d +); + +330 +n +++; + +334 +x + + +check_five_ds +[ +i +][2]; + +335 +y + + +check_five_ds +[ +i +][3]; + +337 i( +n + > +MIN_POP_LEN +) + +339 + `SDL_LogDebug +( +SDL_LOG_CATEGORY_APPLICATION +, + +342 +t +. +x +, s. +y +, +d +.x,nd.y); + +344 + `SDL_LogDebug +( +SDL_LOG_CATEGORY_APPLICATION +, + +346 +t +. +y +, +d +.y, +check_five_ds +[ +i +][3], + +347 +check_five_ds +[ +i +][3]); + +348 + `SDL_LogDebug +( +SDL_LOG_CATEGORY_APPLICATION +, + +350 +t +. +x +, +d +.x, +check_five_ds +[ +i +][2], + +351 +check_five_ds +[ +i +][2]); + +352 +x + = +t +.x; + +353 +y + = +t +.y; + +356 +cut + = & +e +-> +grid +[ + `INDEX +( +x +, +y +)]; + +357 + `SDL_LogDebug +( +SDL_LOG_CATEGORY_APPLICATION +, + +359 +cut +-> +cods +. +x +, + +360 +cut +-> +cods +. +y +, + +361 +x +, +y +, + +362 +_mes +[ +cut +-> +cڋs +]); + +363 +cut +-> +cڋs + = +CELL_EMPTY +; + +364 +cut +-> +emy + = 1; + +365 + `SDL_LogDebug +( +SDL_LOG_CATEGORY_APPLICATION +, + +367 +cut +-> +cods +. +x +, + +368 +cut +-> +cods +. +y +, + +369 +_mes +[ +cut +-> +cڋs +]); + +370 +x + + +check_five_ds +[ +i +][2]; + +371 +y + + +check_five_ds +[ +i +][3]; + +373 !(( +x + = +d +.x + +check_five_ds +[ +i +][2]) + +374 && ( +y + = +d +.y + +check_five_ds +[ +i +][3]))); + +376 +e +-> +sce + + +n + * +POP_STRING_CELL_VALUE +; + +377  +check_five_fish +; + +381 + `SDL_LogDebug +( +SDL_LOG_CATEGORY_APPLICATION +, + +382 "check_five: = %d,مpg", +n +); + +384 +i +++; + +385 i( +i + < ( +check_five_ds +) / (check_five_deltas[0])) + +386  +check_five_lo +; + +388 + `fl_t +( +e +); + +390 +check_five_fish +: + +391 +e +-> +mode + = +STATE_IDLE +; + +392 + } +} + +395 + $nup +( +S +* +e +) + +397 + `as +( +e + ! +NULL +); + +399 + ` +( +e +-> +loti_ack +); + +400 + ` +( +e +-> +grid +); + +402 i( +e +-> +background +) + +403 + `SDL_DeroyTextu +( +e +-> +background +); + +404 i( +e +-> +r12_xtu +) + +405 + `SDL_DeroyTextu +( +e +-> +r12_xtu +); + +406 i( +e +-> +res +) + +407 + `SDL_DeroyTextu +( +e +-> +res +); + +408 i( +e +-> +nd +) + +409 + `SDL_DeroyRd +( +e +-> +nd +); + +410 i( +e +-> +wdow +) + +411 + `SDL_DeroyWdow +( +e +-> +wdow +); + +413 + `SDL_Qu +(); + +414 + } +} + +417 + $do_ex +(cڡ  +code +,  +S +* +e +) + +419 + `nup +( +e +); + +420 + `ex +( +code +); + +421 + } +} + +424 + $dw +( +S +* +e +) + +426  +Cl +* +c + = +NULL +; + +427 +SDL_FRe + +bg_ +, +_ +; + +428 +SDL_FRe + +de_ +; + +429  +x +, +y +; + +430  +x +, +y +; + +431  +drx +, +dry +; + +432  +tx +, +ty +; + +434 + `as +( +e + ! +NULL +); + +435 + `as +( +e +-> +_s_ + != 0.0f); + +437 + `lcuϋ_grid_ig +( +e +, & +tx +, & +ty +); + +439 +bg_ +. +x + = 0; + +440 +bg_ +. +y + = 0; + +441 +bg_ +. +w + = +e +-> +_s_ + * ( +CELL_SIZE + * +GRID_WIDTH + + 1); + +442 +bg_ +. +h + = +e +-> +_s_ + * ( +CELL_SIZE + * +GRID_HEIGHT + + 1); + +444 + `SDL_SRdDwC +( +e +-> +nd +, 0, 0, 0, +SDL_ALPHA_OPAQUE +); + +445 + `SDL_RdCˬ +( +e +-> +nd +); + +448 i(! +e +-> +background +) + +449 + `dw_background +( +e +, & +bg_ +); + +452 +de_ +. +x + = +tx +; + +453 +de_ +. +y + = +ty +; + +454 +de_ +. +w + = +bg_ +.w; + +455 +de_ +. +h + = +bg_ +.h; + +456 + `SDL_RdLe +( +e +-> +nd +, 1, 1, 50, 50); + +457 + `SDL_RdTextu +( +e +-> +nd +, s-> +background +, & +bg_ +, + +458 & +de_ +); + +461 +_ +. +w + = +CELL_SIZE +; + +462 +_ +. +h + = +CELL_SIZE +; + +463 +de_ +. +w + = +e +-> +_s_ + * +CELL_SIZE +; + +464 +de_ +. +h + = +e +-> +_s_ + * +CELL_SIZE +; + +465  +y + = 0; y < +GRID_HEIGHT +; y++) + +466  +x + = 0; x < +GRID_WIDTH +; x++) + +468 +c + = & +e +-> +grid +[ + `INDEX +( +x +, +y +)]; + +469 i( +c +-> +cڋs + = +CELL_EMPTY +) + +472 + `g_re_xy +( +c +-> +cڋs +, & +x +, & +y +); + +473 +_ +. +x + = +x +; + +474 +_ +. +y + = +y +; + +475 i( +c +-> +th +) + +477 + `grid_cod_to_sn_cod +( +e +, + +478 +e +-> +imi +. +posi +. +x +, + +479 +e +-> +imi +. +posi +. +y +, +tx + + 1, + +480 +ty + + 1, & +drx +, & +dry +); + +484 + `grid_cod_to_sn_cod +( +e +, +x +, +y +, + +485 +tx + + 1, +ty + + 1, & +drx +, & +dry +); + +487 +de_ +. +x + = +drx +; + +488 +de_ +. +y + = +dry +; + +489 + `SDL_RdTextu +( +e +-> +nd +, s-> +res +, + +490 & +_ +, & +de_ +); + +494 i( +e +-> +i_t +. +x + != -1) + +496 + `g_re_xy +( +CELL_SELECTED +, & +x +, & +y +); + +497 +_ +. +x + = +x +; + +498 +_ +. +y + = +y +; + +499 + `grid_cod_to_sn_cod +( +e +, s-> +i_t +. +x +, + +500 +e +-> +i_t +. +y +, +tx + + 1, +ty + + 1, & +drx +, + +501 & +dry +); + +502 +de_ +. +x + = +drx +; + +503 +de_ +. +y + = +dry +; + +504 + `SDL_RdTextu +( +e +-> +nd +, s-> +res +, & +_ +, + +505 & +de_ +); + +509 + `dw_xt +( +e +, 0, + +510 +e +-> +sn_height + - s-> +xt_s_ + * +TER12_HEIGHT +, + +511 +TER12_WIDTH +, +TER12_HEIGHT +, +e +-> +r12_xtu +, + +512 "Sce: %06u F1 = H Stus: %s", +e +-> +sce +, + +513 +e_destis +[ +e +-> +mode +]); + +515 i( +e +-> +hp_shown +) + +516 + `dw_hp_dlog +( +e +); + +522 + `SDL_RdP +( +e +-> +nd +); + +523 + } +} + +526 + $dw_background +( +S +* +e +, +SDL_FRe +* +bg_ +) + +528 cڡ +SDL_DiyMode +* +mode +; + +529 +SDL_FRe + +_ +, +de_ +; + +530 +SDL_DiyID + +diy +; + +531  +x +, +y +; + +532  +drx +, +dry +; + +533  +x +, +y +; + +535 + `as +(( +e + ! +NULL +&& ( +bg_ + != NULL)); + +536 + `as +( +e +-> +_s_ + != 0.0f); + +538 i(( +diy + = + `SDL_GDiyFWdow +( +e +-> +wdow +)) == 0) + +540 + `SDL_LogE +( +SDL_LOG_CATEGORY_ERROR +, + +541 "SDL_GDiyFWdow faed: %s", + `SDL_GE +()); + +542 + `do_ex +(1, +e +); + +545 i(( +mode + = + `SDL_GCutDiyMode +( +diy +)= +NULL +) + +547 + `SDL_LogE +( +SDL_LOG_CATEGORY_ERROR +, + +548 "SDL_GCutDiyModed: %s", + `SDL_GE +()); + +549 + `do_ex +(1, +e +); + +552 +e +-> +background + = + `SDL_CeTextu +(e-> +nd +, +mode +-> +fm +, + +553 +SDL_TEXTUREACCESS_TARGET +, +bg_ +-> +w +, bg_-> +h +); + +554 i(! +e +-> +background +) + +556 + `SDL_LogE +( +SDL_LOG_CATEGORY_ERROR +, + +557 "SDL_CeTextu faed: %s", + `SDL_GE +()); + +558 + `do_ex +(1, +e +); + +560 i(! + `SDL_SRdTg +( +e +-> +nd +, s-> +background +)) + +562 + `SDL_LogE +( +SDL_LOG_CATEGORY_ERROR +, + +563 "SDL_SRdTg faed: %s", + `SDL_GE +()); + +564 + `do_ex +(1, +e +); + +567 +de_ +. +w + = +e +-> +_s_ + * +CELL_SIZE +; + +568 +de_ +. +h + = +e +-> +_s_ + * +CELL_SIZE +; + +569 + `g_re_xy +( +CELL_EMPTY +, & +x +, & +y +); + +570 +_ +. +x + = +x +; + +571 +_ +. +y + = +y +; + +572 +_ +. +w + = +CELL_SIZE +; + +573 +_ +. +h + = +CELL_SIZE +; + +574  +y + = 0; y < +GRID_HEIGHT +; y++) + +575  +x + = 0; x < +GRID_WIDTH +; x++) + +577 + `grid_cod_to_sn_cod +( +e +, +x +, +y +, 0.0f, 0.0f, + +578 & +drx +, & +dry +); + +579 +de_ +. +x + = +e +-> +_s_ + + +drx +; + +580 +de_ +. +y + = +e +-> +_s_ + + +dry +; + +581 + `SDL_RdTextu +( +e +-> +nd +, s-> +res +, + +582 & +_ +, & +de_ +); + +586  +x + = -1; x < +GRID_WIDTH +; x++) + +588 + `grid_cod_to_sn_cod +( +e +, +x +, -1, 0.0f, 0.0f, & +drx +, & +dry +); + +589 +de_ +. +x + = +e +-> +_s_ + + +drx +; + +590 +de_ +. +y + = +e +-> +_s_ + + +dry +; + +591 + `SDL_RdTextu +( +e +-> +nd +, s-> +res +, & +_ +, + +592 & +de_ +); + +596  +y + = 0; y < +GRID_WIDTH +; y++) + +598 + `grid_cod_to_sn_cod +( +e +, -1, +y +, 0.0f, 0.0f, & +drx +, & +dry +); + +599 +de_ +. +x + = +e +-> +_s_ + + +drx +; + +600 +de_ +. +y + = +e +-> +_s_ + + +dry +; + +601 + `SDL_RdTextu +( +e +-> +nd +, s-> +res +, & +_ +, + +602 & +de_ +); + +605 + `SDL_SRdDwBndMode +( +e +-> +nd +, +SDL_BLENDMODE_NONE +); + +606 + `SDL_SRdDwC +( +e +-> +nd +, 255, 255, 255, +SDL_ALPHA_OPAQUE +); + +608 + `SDL_SRdTg +( +e +-> +nd +, +NULL +); + +609 + } +} + +612 + $dw_hp_dlog +( +S +* +e +) + +614 cڡ ** +php_xt + = +hp_xt +; + +615  +sx + = +e +-> +sn_width + / 2 - +HELP_DIALOG_WIDTH + / 2; + +616  +sy + = +e +-> +sn_height + / 2 - +HELP_DIALOG_HEIGHT + / 2; + +617 +SDL_FRe + +dlog_ +; + +619 +dlog_ +. +x + = +sx +; + +620 +dlog_ +. +y + = +sy +; + +621 +dlog_ +. +w + = +HELP_DIALOG_WIDTH +; + +622 +dlog_ +. +h + = +HELP_DIALOG_HEIGHT +; + +624 + `SDL_SRdDwBndMode +( +e +-> +nd +, +SDL_BLENDMODE_BLEND +); + +625 + `SDL_SRdDwC +( +e +-> +nd +, 0, 0, 0, .75 * 255); + +626 + `SDL_RdFlRe +( +e +-> +nd +, & +dlog_ +); + +628 + `SDL_SRdDwBndMode +( +e +-> +nd +, +SDL_BLENDMODE_NONE +); + +629 + `SDL_SRdDwC +( +e +-> +nd +, 255, 255, 255, +SDL_ALPHA_OPAQUE +); + +630 + `SDL_RdRe +( +e +-> +nd +, & +dlog_ +); + +631 + `SDL_SRdDwC +( +e +-> +nd +, 0, 0, 0, +SDL_ALPHA_OPAQUE +); + +632 +dlog_ +. +x +--; + +633 +dlog_ +. +y +--; + +634 +dlog_ +. +w + += 2; + +635 +dlog_ +. +h + += 2; + +636 + `SDL_RdRe +( +e +-> +nd +, & +dlog_ +); + +637 +dlog_ +. +x +--; + +638 +dlog_ +. +y +--; + +639 +dlog_ +. +w + += 2; + +640 +dlog_ +. +h + += 2; + +641 + `SDL_RdRe +( +e +-> +nd +, & +dlog_ +); + +643 * +php_xt +) + +645 + `dw_xt +( +e +, + +646 +sx + + +e +-> +xt_s_ + * (2 * +TER12_WIDTH +), + +647 +sy + + +648 + ( +php_xt + - +hp_xt + + 1) + +649 * +e +-> +xt_s_ + + +650 * ( +TER12_HEIGHT + + 2), + +651 +TER12_WIDTH +, +TER12_HEIGHT +, +e +-> +r12_xtu +, + +652 * +php_xt +); + +653 +php_xt +++; + +655 + } +} + +658 + $dw_xt +( +S +* +e +, cڡ  +x +, cڡ  +y +, cڡ  +ft_width +, + +659 cڡ  +ft_height +, +SDL_Textu +* +ft_x +, cڡ * +xt +, ...) + +661  +buf +[ +PRINT_BUFSIZE +]; + +662 +va_li + +gs +; + +663 cڡ * +pbuf + = +NULL +; + +664  +xt + = 0; + +665  +yt + = 0; + +666 +SDL_FRe + +sour_ +; + +667 +SDL_FRe + +de_ +; + +668  +dex + = 0; + +669  +chs_r_row + = 0; + +670  +f_ch + = ' '; + +671  +ϡ_ch + = '~'; + +672  +x_w +, +x_h +; + +674 + `as +(( +ft_x + ! +NULL +&& ( +xt + != NULL)); + +675 + `as +( +e +-> +xt_s_ + != 0.0f); + +676 + `as +( +ft_width + != -1); + +678 + `va_t +( +gs +, +xt +); + +679 + `vtf +( +buf +, (buf), +xt +, +gs +); + +680 + `va_d +( +gs +); + +682 +sour_ +. +w + = +ft_width +; + +683 +sour_ +. +h + = +ft_height +; + +685 +de_ +. +x + = x; + +686 +de_ +. +y + = y; + +687 +de_ +. +w + = +e +-> +xt_s_ + * +ft_width +; + +688 +de_ +. +h + = +e +-> +xt_s_ + * +ft_height +; + +690 i(! + `SDL_GTextuSize +( +ft_x +, & +x_w +, & +x_h +)) + +692 + `SDL_LogE +( +SDL_LOG_CATEGORY_ERROR +, + +693 "SDL_GTextuSized: %s", + `SDL_GE +()); + +694 + `do_ex +(1, +e +); + +697 +chs_r_row + = +x_w + / ( +ft_width + + 1); + +699 +pbuf + = +buf +; + +701 * +pbuf +) + +703 i(* +pbuf + > +f_ch + && *pbu< +ϡ_ch +) + +705 +dex + = ()(* +pbuf + - +f_ch +); + +707 +xt + = 1 + +dex + % +chs_r_row + * ( +ft_width + + 1); + +708 +yt + = 1 + +dex + / +chs_r_row + * ( +ft_height + + 1); + +713 +sour_ +. +x + = +xt +; + +714 +sour_ +. +y + = +yt +; + +716 + `SDL_RdTextu +( +e +-> +nd +, +ft_x +, & +sour_ +, + +717 & +de_ +); + +719 +de_ +. +x + + +e +-> +xt_s_ + * +ft_width +; + +721 +pbuf +++; + +724 + } +} + +727 + $fl_t +( +S +* +e +) + +729  +x +, +y +; + +730  +ss +; + +731  +c +; + +733 +ss + = 0; + +734 +fl_t_ge +: + +735 +x + = + `ndom +(% +GRID_WIDTH +; + +736 +y + = + `ndom +(% +GRID_HEIGHT +; + +737 i( +e +-> +grid +[ + `INDEX +( +x +, +y +)]. +cڋs + ! +CELL_EMPTY +) + +738  +fl_t_ge +; + +740  + `ndom +() % 5) + +743 +c + = +CELL_RED +; + +746 +c + = +CELL_BLUE +; + +749 +c + = +CELL_GREEN +; + +752 +c + = +CELL_PURPLE +; + +755 +c + = +CELL_ORANGE +; + +757 +e +-> +grid +[ + `INDEX +( +x +, +y +)]. +cڋs + = +c +; + +758 +e +-> +grid +[ + `INDEX +( +x +, +y +)]. +emy + = 0; + +759 +ss +++; + +760 + `SDL_LogDebug +( +SDL_LOG_CATEGORY_APPLICATION +, + +761 "fl_t: % (%d, %d)", +_mes +[() +c +], +x +, +y +); + +762 i( +ss + < 3) + +763  +fl_t_ge +; + +764 + } +} + +767 + $fd_sh܋_th +( +Cl +* +c +, Cl* +sour +, cڡ  +di +) + +769 i(! +c + || c-> +th_di + < +di +) + +772 i(! +c +-> +emy + && !c-> +tg + && !c-> +dg +) + +775 i( +c +-> +tg +) + +776 +c +-> +th_di + = +di +; + +778 i( +c +-> +th_di + > +di +) + +780 +c +-> +th_di + = +di +; + +781 +c +-> +th_sour + = +sour +; + +784 i( +c +-> +dg +) + +787 + `fd_sh܋_th +( +c +-> + +, c, +di + + 1); + +788 + `fd_sh܋_th +( +c +-> +up +, c, +di + + 1); + +789 + `fd_sh܋_th +( +c +-> +right +, c, +di + + 1); + +790 + `fd_sh܋_th +( +c +-> +down +, c, +di + + 1); + +791 + } +} + +794 + $g_re_xy +(cڡ  + +, * +x +, * +y +) + +796 + `as +(( +x + ! +NULL +&& ( +y + != NULL)); + +797  + +) + +799  +CELL_RED +: + +800 * +x + = 1 * +CELL_SIZE +; + +801 * +y + = 0; + +803  +CELL_BLUE +: + +804 * +x + = 2 * +CELL_SIZE +; + +805 * +y + = 0; + +807  +CELL_GREEN +: + +808 * +x + = 3 * +CELL_SIZE +; + +809 * +y + = 0; + +811  +CELL_PURPLE +: + +812 * +x + = 4 * +CELL_SIZE +; + +813 * +y + = 0; + +815  +CELL_ORANGE +: + +816 * +x + = 5 * +CELL_SIZE +; + +817 * +y + = 0; + +819  +CELL_SELECTED +: + +820 * +x + = 0; + +821 * +y + = 1 * +CELL_SIZE +; + +824 * +x + = 0; + +825 * +y + = 0; + +829 + } +} + +832 + $grid_cod_to_sn_cod +(cڡ  +S +* +e +, cڡ  +x +, cڡ  +y +, + +833 cڡ  +tx +, cڡ  +ty +, * +to_x +, * +to_y +) + +835 + `as +(( +e + ! +NULL +&& ( +to_x + !NULL&& ( +to_y + != NULL)); + +836 * +to_x + = +tx + + +x + * +e +-> +_s_ + * +CELL_SIZE +; + +837 * +to_y + = +ty + + +y + * +e +-> +_s_ + * +CELL_SIZE +; + +838 + } +} + +841 + $grid_cod_to_sn_codF +(cڡ  +S +* +e +, cڡ  +x +, + +842 cڡ  +y +, cڡ  +tx +, cڡ  +ty +, * +to_x +, + +843 * +to_y +) + +845 + `as +(( +e + ! +NULL +&& ( +to_x + !NULL&& ( +to_y + != NULL)); + +846 * +to_x + = +tx + + +x + * +e +-> +_s_ + * +CELL_SIZE +; + +847 * +to_y + = +ty + + +y + * +e +-> +_s_ + * +CELL_SIZE +; + +848 + } +} + +850 * + g_image +[] = {"[ ]", "[R]", "[B]", "[G]", "[P]", "[O]", "[/]", + +853  + #CELL_START + 7 + + ) + +854  + #CELL_END + 8 + + ) + +855  + #CELL_PATH + 9 + + ) + +858 + $hd_ick +( +S +* +e +) + +860  +tx +, +ty +; + +862 + `as +( +e + ! +NULL +); + +863 i( +e +-> +mode + = +STATE_IDLE +) + +865 + `lcuϋ_grid_ig +( +e +, & +tx +, & +ty +); + +866 + `sn_cod_to_grid_cod +( +e +, s-> +por +. +x +, + +867 +e +-> +por +. +y +, +tx +, +ty +, + +868 & +e +-> +i_t +. +x +, &e->i_t. +y +); + +869 +e +-> +imi +. +t +. +x + = ()e-> +i_t +.x; + +870 +e +-> +imi +. +t +. +y + = ()e-> +i_t +.y; + +871 +e +-> +imi +. +posi +. +x + = s->imi. +t +.x; + +872 +e +-> +imi +. +posi +. +y + = s->imi. +t +.y; + +873 +e +-> +th_t + + +874 & +e +-> +grid +[ + `INDEXFI +(e-> +imi +. +t +. +x +, + +875 +e +-> +imi +. +t +. +y +)]; + +876 + `SDL_LogDebug +( +SDL_LOG_CATEGORY_APPLICATION +, + +878 +e +-> +th_t +-> +cods +. +x +, + +879 +e +-> +th_t +-> +cods +. +y +, + +880 +e +-> +th_t +-> +emy + ? "TRUE" : "FALSE"); + +881 i( +e +-> +th_t +-> +emy +) + +883 +e +-> +th_t + = +NULL +; + +884 +e +-> +i_t +. +x + = -1; + +885 +e +-> +i_t +. +y + = -1; + +889 +e +-> +mode + = +STATE_SELECTION +; + +890 +e +-> +th_t +-> +tg + = 1; + +891 + `SDL_LogDebug +( +SDL_LOG_CATEGORY_APPLICATION +, + +895 +tx +, +ty +, +e +-> +por +. +x +, s->por. +y +, + +896 +e +-> +i_t +. +x +, s->i_t. +y +); + +897 +e +-> +dw + = 1; + +899 i( +e +-> +mode + = +STATE_SELECTION +) + +901 +e +-> +mode + = +STATE_MOVING +; + +902 + `lcuϋ_grid_ig +( +e +, & +tx +, & +ty +); + +903 + `sn_cod_to_grid_cod +( +e +, s-> +por +. +x +, + +904 +e +-> +por +. +y +, +tx +, +ty +, + +905 & +e +-> +i_d +. +x +, &e->i_d. +y +); + +906 +e +-> +th_d + = &e-> +grid +[ + `INDEXFI +(e-> +i_d +. +x +, + +907 +e +-> +i_d +. +y +)]; + +909 i(! +e +-> +th_d +-> +emy +) + +910  +hd_ick_t +; + +912 + `SDL_LogDebug +( +SDL_LOG_CATEGORY_APPLICATION +, + +916 +tx +, +ty +, +e +-> +por +. +x +, s->por. +y +, + +917 +e +-> +i_d +. +x +, s->i_d. +y +); + +919 + `SDL_LogDebug +( +SDL_LOG_CATEGORY_APPLICATION +, + +921 +e +-> +th_t +-> +cods +. +x +, + +922 +e +-> +th_t +-> +cods +. +y +, s-> +th_d +->cods. +x +, + +923 +e +-> +th_d +-> +cods +. +y +); + +924 +e +-> +th_d +-> +dg + = 1; + +926 + `fd_sh܋_th +( +e +-> +th_t +, +NULL +, 0); + +927 + `mk_th +( +e +-> +th_d +); + +928 + `tf +("M =\n"); + +929 + `t_mrix +( +e +-> +grid +); + +932 i(! +e +-> +th_t +-> +th_xt +) + +933  +hd_ick_t +; + +935 +e +-> +imi +. +d +. +x + = s-> +th_t +-> +th_xt +-> +cods +.x; + +936 +e +-> +imi +. +d +. +y + = s-> +th_t +-> +th_xt +-> +cods +.y; + +937 + `SDL_LogDebug +( +SDL_LOG_CATEGORY_APPLICATION +, + +939 +e +-> +imi +. +t +. +x +, s->imi.t. +y +, + +940 +e +-> +imi +. +d +. +x +, s->imi.d. +y +); + +941 +e +-> +i_t +. +x + = -1; + +942 +e +-> +i_t +. +y + = -1; + +943 + `lcuϋ_d +( +e +); + +944 +e +-> +imi +. + + = 1; + +945 +e +-> +imi +. +f_ + = +ANIM_STEPS +; + +946 +e +-> +imi +. +aive + = 1; + +947 +e +-> +dw + = 1; + +948 + `t_th +(& +e +-> +grid +[ + `INDEXFI +(e-> +imi +. +t +. +x +, + +949 +e +-> +imi +. +t +. +y +)]); + +953 +hd_ick_t +: + +954 + `SDL_LogDebug +( +SDL_LOG_CATEGORY_APPLICATION +, "handle_click: Reset"); + +955 +e +-> +i_t +. +x + = -1; + +956 +e +-> +i_t +. +y + = -1; + +957 +e +-> +th_t +-> +tg + = 0; + +958 +e +-> +th_t + = +NULL +; + +959 +e +-> +th_d +-> +dg + = 0; + +960 +e +-> +th_d + = +NULL +; + +961 +e +-> +mode + = +STATE_IDLE +; + +962 +e +-> +dw + = 1; + +963 + } +} + +966 + $hd_evt +( +S +* +e +, +SDL_Evt +* +evt +) + +973  +evt +-> +ty +) + +975  +SDL_EVENT_QUIT +: + +976 +e +-> +rušg + = 0; + +978  +SDL_EVENT_WINDOW_RESIZED +: + +979 +e +-> +dw + = 1; + +980 + `lcuϋ_diy_size +( +e +); + +982  +SDL_EVENT_KEY_DOWN +: + +983 + `SDL_LogDebug +( +SDL_LOG_CATEGORY_APPLICATION +, + +984 "G Keydown, key = %X, mod = %X", +evt +-> +key +.key, + +985 +evt +-> +key +. +mod +); + +987  +evt +-> +key +.key) + +989  +SDLK_F1 +: + +990 +e +-> +hp_shown + = 1; + +991 +e +-> +dw + = 1; + +993  +SDLK_RETURN +: + +994 i(!( +evt +-> +key +. +mod + & +SDL_KMOD_ALT +)) + +996 +e +-> +fu_sn + = !state->full_screen; + +997 + `SDL_LogDebug +( +SDL_LOG_CATEGORY_APPLICATION +, + +999 +e +-> +fu_sn + ? "ON" : "OFF"); + +1000 + `SDL_SWdowFusn +( +e +-> +wdow +, + +1001 +e +-> +fu_sn +); + +1003  +SDLK_ESCAPE +: + +1004 +e +-> +hp_shown + = 0; + +1005 +e +-> +dw + = 1; + +1007  +SDLK_Q +: + +1008 i( +evt +-> +key +. +mod + & +SDL_KMOD_CTRL +) + +1009 +e +-> +rušg + = 0; + +1012 + `SDL_LogDebug +( +SDL_LOG_CATEGORY_APPLICATION +, + +1016  +SDL_EVENT_MOUSE_BUTTON_UP +: + +1017 + `hd_ick +( +e +); + +1019  +SDL_EVENT_MOUSE_MOTION +: + +1020 +e +-> +por +. +x + = +evt +-> +mi +.x; + +1021 +e +-> +por +. +y + = +evt +-> +mi +.y; + +1022 +e +-> +dw + = 1; + +1025 + } +} + +1028 + $_imi +( +AnimiS +* +imi +) + +1030 + `as +( +imi + ! +NULL +); + +1031 +imi +-> +t +. +x + = -1; + +1032 +imi +-> +t +. +y + = -1; + +1033 +imi +-> +posi +. +x + = -1; + +1034 +imi +-> +posi +. +y + = -1; + +1035 +imi +-> +d +. +x + = -1; + +1036 +imi +-> +d +. +y + = -1; + +1037 +imi +-> +d +. +x + = 0; + +1038 +imi +-> +d +. +y + = 0; + +1039 +imi +-> +aive + = 0; + +1040 +imi +-> + + = 0; + +1041 +imi +-> +f_ + = 0; + +1042 + } +} + +1045 + $_ +( +Cl +* +c +, cڡ +SDL_FPot +* +cods +) + +1047 + `as +(( +c + ! +NULL +&& ( +cods + != NULL)); + +1048 +c +-> +emy + = 1; + +1049 +c +-> +tg + = 0; + +1050 +c +-> +dg + = 0; + +1051 +c +-> +th + = 0; + +1052 +c +-> +cods +. +x + = coords->x; + +1053 +c +-> +cods +. +y + = coords->y; + +1054 +c +-> +cڋs + = +CELL_EMPTY +; + +1055 +c +-> + + = c-> +up + = c-> +right + = c-> +down + = +NULL +; + +1056 +c +-> +th_sour + = +NULL +; + +1057 +c +-> +th_di + = +INT_MAX +; + +1058 + } +} + +1061 + $_e +( +S +* +e +) + +1063 + `as +( +e + ! +NULL +); + +1064 + `_imi +(& +e +-> +imi +); + +1065 +e +-> +grid + = +NULL +; + +1066 +e +-> +loti_por + = 0; + +1067 +e +-> +loti_ack + = +NULL +; + +1068 +e +-> +_s_ + = 2.0f; + +1069 +e +-> +diy_width + = +DEFAULT_WIDTH +; + +1070 +e +-> +diy_height + = +DEFAULT_HEIGHT +; + +1071 +e +-> +fu_sn + = 1; + +1072 +e +-> +hp_shown + = 0; + +1073 +e +-> +th_t + = +NULL +; + +1074 +e +-> +th_d + = +NULL +; + +1075 +e +-> +dw + = 1; + +1076 +e +-> +nd + = +NULL +; + +1077 +e +-> +rušg + = 1; + +1078 +e +-> +sn_width + = +DEFAULT_WIDTH +; + +1079 +e +-> +sn_height + = +DEFAULT_HEIGHT +; + +1080 +e +-> +sce + = 0; + +1081 +e +-> +res + = +NULL +; + +1082 +e +-> +mode + = +STATE_IDLE +; + +1083 +e +-> +r12_xtu + = +NULL +; + +1084 +e +-> +background + = +NULL +; + +1085 +e +-> +wdow + = +NULL +; + +1086 +e +-> +xt_s_ + = 2.0f; + +1087 + } +} + +1090 + $ld_xtus +( +S +* +e +) + +1092 +SDL_Sur +* +sur + = +NULL +; + +1093 +SDL_SMode + +s_mode + = +SDL_SCALEMODE_PIXELART +; + +1095 + `as +( +e + ! +NULL +); + +1097 +sur + = + `y_ld +( +SPRITES_PNG +); + +1098 i(! +sur +) + +1100 +e +-> +res + = + `SDL_CeTextuFromSur +(e-> +nd +, +sur +); + +1101 i(! +e +-> +res +) + +1103 + `SDL_LogE +( +SDL_LOG_CATEGORY_ERROR +, + +1105 + `SDL_GE +()); + +1106 + `do_ex +(1, +e +); + +1108 + `SDL_STextuSMode +( +e +-> +res +, +s_mode +); + +1109 + `SDL_DeroySur +( +sur +); + +1111 +sur + = + `y_ld +( +TER12_PNG +); + +1112 i(! +sur +) + +1114 +e +-> +r12_xtu + + +1115 + `SDL_CeTextuFromSur +( +e +-> +nd +, +sur +); + +1116 i(! +e +-> +r12_xtu +) + +1118 + `SDL_LogE +( +SDL_LOG_CATEGORY_ERROR +, + +1120 + `SDL_GE +()); + +1121 + `do_ex +(1, +e +); + +1123 + `SDL_STextuSMode +( +e +-> +r12_xtu +, +s_mode +); + +1124 + `SDL_DeroySur +( +sur +); + +1127 + } +} + +1130 + $loti_p +( +S +* +e +, +SDL_Pot +* +loti +) + +1132 + `as +(( +e + ! +NULL +&& ( +loti + != NULL)); + +1133 i( +e +-> +loti_por + == 0) + +1135 +e +-> +loti_por +--; + +1136 +loti +-> +x + = +e +-> +loti_ack +[e-> +loti_por +].x; + +1137 +loti +-> +y + = +e +-> +loti_ack +[e-> +loti_por +].y; + +1139 + } +} + +1142 + $loti_push +( +S +* +e +, cڡ +SDL_Pot +* +loti +) + +1144 + `as +( +loti + ! +NULL +); + +1145 +e +-> +loti_ack +[e-> +loti_por +]. +x + = +loti +->x; + +1146 +e +-> +loti_ack +[e-> +loti_por +]. +y + = +loti +->y; + +1147 +e +-> +loti_por +++; + +1148 + } +} + +1151 + $mk_th +( +Cl +* +c +) + +1153 i(! +c +) + +1156 +c +-> +th + = 1; + +1157 i( +c +-> +th_sour +) + +1159 +c +-> +th_sour +-> +th_xt + = c; + +1160 + `SDL_LogDebug +( +SDL_LOG_CATEGORY_APPLICATION +, + +1162 +c +-> +th_sour +-> +cods +. +x +, c->th_sour->cods. +y +, + +1163 +c +-> +th_sour +-> +th_xt +-> +cods +. +x +, + +1164 +c +-> +th_sour +-> +th_xt +-> +cods +. +y +); + +1166 + `mk_th +( +c +-> +th_sour +); + +1167 + } +} + +1170 + $xt_ +( +S +* +e +) + +1172 + `as +( +e + ! +NULL +); + +1173 +e +-> +dw + = 1; + +1174 + } +} + +1177 + $sb +(cڡ  +S +* +e +, cڡ  +x +, cڡ  +y +) + +1179 + `as +( +e + ! +NULL +); + +1180  +x + >0 && x < +GRID_WIDTH + && +y + >0 && y < +GRID_HEIGHT + + +1181 && +e +-> +grid +[ + `INDEX +( +x +, +y +)]. +cڋs + = +CELL_EMPTY +; + +1182 + } +} + +1185 + $t_mrix +(cڡ  +Cl +* +M +) + +1187 cڡ  +Cl +* +c + = +NULL +; + +1188  +x +, +y +; + +1190  +y + = 0; y < +GRID_HEIGHT +; y++) + +1192  +x + = 0; x < +GRID_WIDTH +; x++) + +1194 +c + = & +M +[ + `INDEX +( +x +, +y +)]; + +1195 i( +c +-> +tg +) + +1196 + `tf +("%s", +_image +[ +CELL_START +]); + +1197 i( +c +-> +dg +) + +1198 + `tf +("%s", +_image +[ +CELL_END +]); + +1199 i( +c +-> +th +) + +1200 + `tf +("%s", +_image +[ +CELL_PATH +]); + +1201 i(! +c +-> +emy +) + +1202 + `tf +("%s", +_image +[ +c +-> +cڋs +]); + +1204 + `tf +("%s", +_image +[ +CELL_EMPTY +]); + +1206 + `tf +("\n"); + +1209 + } +} + +1212 + $t_th +( +Cl +* +c +) + +1214 + `tf +("(%0.0f, %0.0f)", +c +-> +cods +. +x +, c->cods. +y +); + +1215 i( +c +-> +th_xt +) + +1217 + `tf +(" -> "); + +1218 + `t_th +( +c +-> +th_xt +); + +1221 + `tf +("\n"); + +1222 + } +} + +1225 + $t +( +S +* +e +) + +1227  +y + = 0; y < +GRID_HEIGHT +; y++) + +1228  +x + = 0; x < +GRID_WIDTH +; x++) + +1229 +e +-> +grid +[ + `INDEX +( +x +, +y +)]. +cڋs + = +CELL_EMPTY +; + +1230 +e +-> +mode + = +STATE_IDLE +; + +1231 +e +-> +i_t +. +x + = -1; + +1232 +e +-> +i_t +. +y + = -1; + +1233 +e +-> +i_d +. +x + = -1; + +1234 +e +-> +i_d +. +y + = -1; + +1235 +e +-> +loti_por + = 0; + +1236 +e +-> +imi +. +aive + = 0; + +1237 +e +-> +dw + = 1; + +1238 + } +} + +1241 + $t_th +( +Cl +* +grid +) + +1243  +Cl +* +c + = +NULL +; + +1244  +x +, +y +; + +1246 + `as +( +grid + ! +NULL +); + +1248  +y + = 0; y < +GRID_HEIGHT +; y++) + +1249  +x + = 0; x < +GRID_WIDTH +; x++) + +1251 +c + = & +grid +[ + `INDEX +( +x +, +y +)]; + +1252 +c +-> +th_sour + = +NULL +; + +1253 +c +-> +th_xt + = +NULL +; + +1254 +c +-> +th_di + = +INT_MAX +; + +1255 +c +-> +tg + = 0; + +1256 +c +-> +dg + = 0; + +1257 +c +-> +th + = 0; + +1259 + } +} + +1262 + $sn_cod_to_grid_cod +( +S +* +e +, cڡ  +x +, cڡ  +y +, + +1263 cڡ  +tx +, cڡ  +ty +, * +to_x +, * +to_y +) + +1265  +__x +, +__y +; + +1266  +_tx +, +_ty +; + +1268 + `as +( +e + ! +NULL +); + +1269 + `as +(( +to_x + ! +NULL +&& ( +to_y + != NULL) + +1270 && ( +e +-> +_s_ + != 0.0f)); + +1271 +__x + = () +e +-> +diy_width + / s-> +sn_width +; + +1272 +__y + = () +e +-> +diy_height + / s-> +sn_height +; + +1273 +_tx + = +tx + * +__x +; + +1274 +_ty + = +ty + * +__y +; + +1277 * +to_x + = +x + > +_tx + + +1278 ? ( +x + < +_tx + + +__x + * +e +-> +_s_ + + +1279 * +CELL_SIZE + * +GRID_WIDTH + + +1280 ? ( +x + - +_tx +/ ( +__x + * +e +-> +_s_ + + +1281 * +CELL_SIZE +) + +1282 : +GRID_WIDTH + - 1) + +1284 * +to_y + = +y + > +_ty + + +1285 ? ( +y + < +_ty + + +__y + * +e +-> +_s_ + + +1286 * +CELL_SIZE + * +GRID_HEIGHT + + +1287 ? ( +y + - +_ty +/ ( +__y + * +e +-> +_s_ + + +1288 * +CELL_SIZE +) + +1289 : +GRID_HEIGHT + - 1) + +1292 + } +} + +1295 + $sn_cod_to_grid_codF +( +S +* +e +, cڡ  +x +, cڡ  +y +, + +1296 cڡ  +tx +, cڡ  +ty +, * +to_x +, * +to_y +) + +1298  +__x +, +__y +; + +1299  +_tx +, +_ty +; + +1301 + `as +( +e + ! +NULL +); + +1302 + `as +(( +to_x + ! +NULL +&& ( +to_y + != NULL) + +1303 && ( +e +-> +_s_ + != 0.0f)); + +1304 +__x + = () +e +-> +diy_width + / s-> +sn_width +; + +1305 +__y + = () +e +-> +diy_height + / s-> +sn_height +; + +1306 +_tx + = +tx + * +__x +; + +1307 +_ty + = +ty + * +__y +; + +1310 * +to_x + = +x + > +_tx + + +1311 ? ( +x + < +_tx + + +__x + * +e +-> +_s_ + + +1312 * +CELL_SIZE + * +GRID_WIDTH + + +1313 ? ( +x + - +_tx +/ ( +__x + * +e +-> +_s_ + + +1314 * +CELL_SIZE +) + +1315 : +GRID_WIDTH + - 1) + +1317 * +to_y + = +y + > +_ty + + +1318 ? ( +y + < +_ty + + +__y + * +e +-> +_s_ + + +1319 * +CELL_SIZE + * +GRID_HEIGHT + + +1320 ? ( +y + - +_ty +/ ( +__y + * +e +-> +_s_ + + +1321 * +CELL_SIZE +) + +1322 : +GRID_HEIGHT + - 1) + +1325 + } +} + +1328 + $_imi +( +S +* +e +) + +1330  +Cl +* +om + = +NULL +; + +1331  +Cl +* +to + = +NULL +; + +1332  +isx +, +isy +, +x +, +y +; + +1334 i( +e +-> +imi +. + + =e->imi. +f_ +) + +1336 +isx + = () + `round +( +e +-> +imi +. +t +. +x +); + +1337 +isy + = () + `round +( +e +-> +imi +. +t +. +y +); + +1338 +x + = () + `round +( +e +-> +imi +. +d +. +x +); + +1339 +y + = () + `round +( +e +-> +imi +. +d +. +y +); + +1340 +om + = & +e +-> +grid +[ + `INDEX +( +isx +, +isy +)]; + +1341 +to + = & +e +-> +grid +[ + `INDEX +( +x +, +y +)]; + +1343 i( +to +-> +dg +) + +1345 +e +-> +imi +. +aive + = 0; + +1346 + `SDL_LogDebug +( +SDL_LOG_CATEGORY_APPLICATION +, + +1348 +e +-> +imi +. +d +. +x +, s->imi.d. +y +); + +1350 i( +to +-> +th_xt +) + +1352 +e +-> +imi +. +t +. +x + = s->imi. +d +.x; + +1353 +e +-> +imi +. +t +. +y + = s->imi. +d +.y; + +1354 +e +-> +imi +. +posi +. +x + = s->imi. +t +.x; + +1355 +e +-> +imi +. +posi +. +y + = s->imi. +t +.y; + +1356 +e +-> +imi +. +d +. +x + = +to +-> +th_xt +-> +cods +.x; + +1357 +e +-> +imi +. +d +. +y + = +to +-> +th_xt +-> +cods +.y; + +1358 + `SDL_LogDebug +( +SDL_LOG_CATEGORY_APPLICATION +, + +1360 +e +-> +imi +. +d +. +x +, s->imi.d. +y +); + +1361 + `SDL_LogDebug +( +SDL_LOG_CATEGORY_APPLICATION +, + +1363 +e +-> +imi +. +t +. +x +, + +1364 +e +-> +imi +. +t +. +y +, + +1365 +e +-> +imi +. +d +. +x +, s->imi.d. +y +); + +1366 + `lcuϋ_d +( +e +); + +1367 +e +-> +imi +. + + = 1; + +1371 + `SDL_LogDebug +( +SDL_LOG_CATEGORY_APPLICATION +, + +1373 +e +-> +imi +. +d +. +x +, s->imi.d. +y +); + +1374 +e +-> +imi +. +aive + = 0; + +1377 + `SDL_LogDebug +( +SDL_LOG_CATEGORY_APPLICATION +, + +1378 "grid[%d][%d] = %d <-> grid[%d][%d] = %d", +y +, +x +, + +1379 +to +-> +cڋs +, +isy +, +isx +, +om +->contents); + +1380 +to +-> +cڋs + = +om +->contents; + +1381 +om +-> +cڋs + = +CELL_EMPTY +; + +1382 +to +-> +emy + = 0; + +1383 +om +-> +emy + = 1; + +1385 i( +to +-> +dg +) + +1387 + `t_th +( +e +-> +grid +); + +1388 +e +-> +th_t + = +NULL +; + +1389 +e +-> +th_d + = +NULL +; + +1391 + `check_five +( +e +, +to +); + +1396 +e +-> +imi +. +posi +. +x + +e->imi. +d +.x; + +1397 +e +-> +imi +. +posi +. +y + +e->imi. +d +.y; + +1398 +e +-> +imi +. + +++; + +1399 + `SDL_LogDebug +( +SDL_LOG_CATEGORY_APPLICATION +, + +1401 +e +-> +imi +. +posi +. +x +, s->imi.posi. +y +, + +1402 +e +-> +imi +. +d +. +x +, s->imi.d. +y +, + +1403 +e +-> +imi +. + +, s->imi. +f_ +, + +1404 +e +-> +imi +. +aive + ? "ACTIVE" : "INACTIVE"); + +1405 + } +} + +1407 +SDL_Sur +* + +1408 + $y_ld +(cڡ * +fame +) + +1410 +SDL_Sur +* +sur + = +NULL +; + +1411  +x_thme +[ +BUFSIZE +]; + +1413 + `as +( +fame + ! +NULL +); + +1414 + `tf +( +x_thme +, +BUFSIZE +, "%s/%s", +DATADIR +, +fame +); + +1415 +sur + = + `IMG_Ld +( +x_thme +); + +1416 i(! +sur +) + +1418 + `SDL_LogE +( +SDL_LOG_CATEGORY_ERROR +, + +1419 "y_ld: IMG_Ld faed: %s", + `SDL_GE +()); + +1420 + `tf +( +x_thme +, +BUFSIZE +, "./%s", +fame +); + +1421 + `SDL_LogDebug +( +SDL_LOG_CATEGORY_APPLICATION +, + +1422 "y_ld:ryg %s", +x_thme +); + +1423 +sur + = + `IMG_Ld +( +x_thme +); + +1424 i(! +sur +) + +1426 + `SDL_LogE +( +SDL_LOG_CATEGORY_ERROR +, + +1428 + `SDL_GE +()); + +1429 + `ex +(1); + +1431 + `SDL_LogDebug +( +SDL_LOG_CATEGORY_APPLICATION +, + +1432 "y_ld: sucs(%s)", +x_thme +); + +1435  +sur +; + +1436 + } +} + +1439 + $ma +( +gc +, ** +gv +) + +1441 +SDL_Evt + +evt +; + +1442  +Cl +* +c + = +NULL +; + +1443  +S + +e +; + +1444  +timeec + +now +; + +1445 +SDL_FPot + +cods +; + +1446  +px +, +py +; + +1447 +ockid_t + +cid +; + +1448  +ϡ_time +, +cut_time +; + +1449  +x +, +y +; + +1453 + `_e +(& +e +); + +1455 i(! + `SDL_In +( +SDL_INIT_VIDEO +)) + +1457 + `SDL_LogE +( +SDL_LOG_CATEGORY_ERROR +, "SDL_Init failed: %s", + +1458 + `SDL_GE +()); + +1459 + `ex +(1); + +1462 + `SDL_SLogPriܙs +( +SDL_LOG_PRIORITY_DEBUG +); + +1463 i(! + `SDL_CeWdowAndRd +( +WIN_TITLE +, +DEFAULT_WIDTH +, + +1464 +DEFAULT_HEIGHT +, + +1465 +SDL_WINDOW_FULLSCREEN + | +SDL_WINDOW_BORDERLESS +, + +1466 & +e +. +wdow +, &e. +nd +)) + +1468 + `SDL_LogE +( +SDL_LOG_CATEGORY_ERROR +, + +1470 + `SDL_GE +()); + +1471 + `do_ex +(1, & +e +); + +1474 + `SDL_SHtWhPriܙy +( +SDL_HINT_RENDER_VSYNC +, "1", +SDL_HINT_OVERRIDE +); + +1475 + `SDL_SRdLogilPi +( +e +. +nd +, +DEFAULT_WIDTH +, + +1476 +DEFAULT_HEIGHT +, +SDL_LOGICAL_PRESENTATION_LETTERBOX +); + +1478 + `lcuϋ_diy_size +(& +e +); + +1480 +e +. +grid + = + `mloc +(( +Cl +* +GRID_WIDTH + * +GRID_HEIGHT + + 1); + +1481 i(! +e +. +grid +) + +1483 + `SDL_LogE +( +SDL_LOG_CATEGORY_ERROR +, "calloc failed"); + +1484 + `do_ex +(1, & +e +); + +1486  +y + = 0; y < +GRID_HEIGHT +; y++) + +1487  +x + = 0; x < +GRID_WIDTH +; x++) + +1489 +c + = & +e +. +grid +[ + `INDEX +( +x +, +y +)]; + +1490 +cods +. +x + = x; + +1491 +cods +. +y + = y; + +1492 + `_ +( +c +, & +cods +); + +1493 i( +x + > 0) + +1494 +c +-> + + = & +e +. +grid +[ + `INDEX +( +x + - 1, +y +)]; + +1495 i( +y + > 0) + +1496 +c +-> +up + = & +e +. +grid +[ + `INDEX +( +x +, +y + - 1)]; + +1497 i( +x + < +GRID_WIDTH + - 1) + +1498 +c +-> +right + = & +e +. +grid +[ + `INDEX +( +x + + 1, +y +)]; + +1499 i( +y + < +GRID_HEIGHT + - 1) + +1500 +c +-> +down + = & +e +. +grid +[ + `INDEX +( +x +, +y + + 1)]; + +1521 i( + `ld_xtus +(& +e +) < 0) + +1522 + `do_ex +(1, & +e +); + +1524 +e +. +loti_ack + + +1525 ( +SDL_Pot +*) + `oc +( +LOCATION_STACK_MAX +, (SDL_Point)); + +1526 +e +. +imi +. +aive + = 0; + +1528 + `SDL_GMouS +(& +px +, & +py +); + +1529 +e +. +por +. +x + = +px +; + +1530 +e +. +por +. +y + = +py +; + +1532 +ϡ_time + = + `SDL_GTicks +(); + +1533 + `ock_guockid +( + `gpid +(), & +cid +); + +1534 + `ock_gtime +( +cid +, & +now +); + +1535 + `dom +( +now +. +tv_c +); + +1537 +e +. +i_t +. +x + = -1; + +1538 +e +. +i_t +. +y + = -1; + +1539 +e +. +i_d +. +x + = -1; + +1540 +e +. +i_d +. +y + = -1; + +1542 + `fl_t +(& +e +); + +1543  +e +. +rušg +) + +1545 +cut_time + = + `SDL_GTicks +(); + +1546 i( +e +. +imi +. +aive +) + +1548 i( +cut_time + > +ϡ_time + + 1000 / 60) + +1550 + `dw +(& +e +); + +1551 + `_imi +(& +e +); + +1552 +ϡ_time + = +cut_time +; + +1557 i( +e +. +dw +) + +1559 + `dw +(& +e +); + +1560 +e +. +dw + = 0; + +1564  + `SDL_PlEvt +(& +evt +)) + +1565 + `hd_evt +(& +e +, & +evt +); + +1569 + } +} + + @version.h + +5  + #PROGRAM_NAME + "lije" + + ) + +6  + #DATE + "unknown" + + ) + +7  + #VERSION + "unknown" + + ) + + @/usr/include/assert.h + +45  + ~<sys/cdefs.h +> + +47 #unde +as + + +48 #unde +_as + + +50 #ifde +NDEBUG + + +51  + #as +( +e +(()0) + + ) + +52  + #_as +( +e +(()0) + + ) + +54  + #_as +( +e + + `as +) + + ) + +55 #i +__ISO_C_VISIBLE + >= 1999 + +56  + #as +( +e +(? ()0 : + `__as2 +( +__FILE__ +, +__LINE__ +, +__func__ +, #e)) + + ) + +58  + #as +( +e +(? ()0 : + `__as +( +__FILE__ +, +__LINE__ +, #e)) + + ) + +62 #ide +_ASSERT_H_ + + +63  + #_ASSERT_H_ + + + ) + +65 #i +defed +( +__STDC_VERSION__ +) && __STDC_VERSION__ >= 201112 + +66  + #ic_as + +_Stic_as + + + ) + +69 +__BEGIN_DECLS + + +70 +__dd +  +__as +(const *, , const *); + +71 +__dd +  +__as2 +(const *, , const *, const *); + +72 + g__END_DECLS + + + @/usr/include/errno.h + +39 #idef +_ERRNO_H_ + + +40  + #_ERRNO_H_ + + + ) + +42  + ~<sys/o.h +> + +44 + g__BEGIN_DECLS + + +45 #i +__BSD_VISIBLE + + +46 #idef +__SYS_ERRLIST + + +47  + #__SYS_ERRLIST + + + ) + +48  +sys_ü +; + +49 * +sys_i +[]; + +53 #ide +o + + +54 * +__o +(); + +55  + #o + (* + `__o +()) + + ) + +57 + g__END_DECLS + + + @/usr/include/math.h + +17 #ide +_MATH_H_ + + +18  + #_MATH_H_ + + + ) + +20  + ~<sys/_tys.h +> + +21  + ~<sys/lims.h +> + +23 +__BEGIN_DECLS + + +27  +__fy +[]; + +28 #i +__GNUC_PREREQ__ +(3, 3) + +29  + #HUGE_VAL + + `__but_huge_v +() + + ) + +31  + #HUGE_VAL + (*(*)(*) +__fy +) + + ) + +37 #i +__ISO_C_VISIBLE + >= 1999 + +38  +__doub_t + + tdoub_t +; + +39  +__t_t + + tt_t +; + +41 #i +__GNUC_PREREQ__ +(3, 3) + +42  + #HUGE_VALF + + `__but_huge_vf +() + + ) + +43  + #HUGE_VALL + + `__but_huge_vl +() + + ) + +44  + #INFINITY + + `__but_ff +() + + ) + +45  + #NAN + + `__but_nf +("") + + ) + +47  + #HUGE_VALF + (() +HUGE_VAL +) + + ) + +48  + #HUGE_VALL + (() +HUGE_VAL +) + + ) + +49  + #INFINITY + +HUGE_VALF + + + ) + +50  +__n +[]; + +51  + #NAN + (*(*)(*) +__n +) + + ) + +54  + #FP_INFINITE + 0x01 + + ) + +55  + #FP_NAN + 0x02 + + ) + +56  + #FP_NORMAL + 0x04 + + ) + +57  + #FP_SUBNORMAL + 0x08 + + ) + +58  + #FP_ZERO + 0x10 + + ) + +60  + #FP_ILOGB0 + (- +INT_MAX +) + + ) + +61  + #FP_ILOGBNAN + +INT_MAX + + + ) + +63 #ifdef +__FP_FAST_FMA + + +64  + #FP_FAST_FMA + 1 + + ) + +67 #ifdef +__FP_FAST_FMAF + + +68  + #FP_FAST_FMAF + 1 + + ) + +71 #ifdef +__FP_FAST_FMAL + + +72  + #FP_FAST_FMAL + 1 + + ) + +75  + #MATH_ERRNO + 1 + + ) + +76  + #MATH_ERREXCEPT + 2 + + ) + +77  + #mh_rhdlg + +MATH_ERREXCEPT + + + ) + +79  + #assify +( +x +) \ + +80 (( ( +x +) ==  ()) ? \ + +81 + `__assifyf +( +x +) \ + +82 : ( ( +x +) ==  ()) ? \ + +83 + `__assify +( +x +) \ + +84 : + `__assifyl +( +x +)) + + ) + +85  + #isfe +( +x +) \ + +86 (( ( +x +) ==  ()) ? \ + +87 + `__isfef +( +x +) \ + +88 : ( ( +x +) ==  ()) ? \ + +89 + `__isfe +( +x +) \ + +90 : + `__isf +( +x +)) + + ) + +91  + #im +( +x +) \ + +92 (( ( +x +) ==  ()) ? \ + +93 + `__imf +( +x +) \ + +94 : ( ( +x +) ==  ()) ? \ + +95 + `__im +( +x +) \ + +96 : + `__iml +( +x +)) + + ) + +97  + #signb +( +x +) \ + +98 (( ( +x +) ==  ()) ? \ + +99 + `__signbf +( +x +) \ + +100 : ( ( +x +) ==  ()) ? \ + +101 + `__signb +( +x +) \ + +102 : + `__signbl +( +x +)) + + ) + +104  + #isg +( +x +, +y +(! + `isunded +((x), (y)&& (x> (y)) + + ) + +105  + #isgequ +( +x +, +y +(! + `isunded +((x), (y)&& (x>(y)) + + ) + +106  + #iess +( +x +, +y +(! + `isunded +((x), (y)&& (x< (y)) + + ) + +107  + #iesqu +( +x +, +y +(! + `isunded +((x), (y)&& (x<(y)) + + ) + +108  + #iessg +( +x +, +y +(! + `isunded +((x), (y)) && \ + +109 (( +x +> ( +y +|| (y> (x))) + + ) + +110  + #isunded +( +x +, +y +( + `i +(x|| i(y)) + + ) + +113  + #isf +( +x +) \ + +114 (( ( +x +) ==  ()) ? \ + +115 + `__isff +( +x +) \ + +116 : ( ( +x +) ==  ()) ? \ + +117 + `__isf +( +x +) \ + +118 : + `__is +( +x +)) + + ) + +119  + #i +( +x +) \ + +120 (( ( +x +) ==  ()) ? \ + +121 + `__if +( +x +) \ + +122 : ( ( +x +) ==  ()) ? \ + +123 + `__i +( +x +) \ + +124 : + `__il +( +x +)) + + ) + +129 #i +__BSD_VISIBLE + || +__XPG_VISIBLE + + +130  + #M_E + (()2.7182818284590452354 + + ) + +131  + #M_LOG2E + (()1.4426950408889634074 + + ) + +132  + #M_LOG10E + (()0.43429448190325182765 + + ) + +133  + #M_LN2 + (()0.69314718055994530942 + + ) + +134  + #M_LN10 + (()2.30258509299404568402 + + ) + +135  + #M_PI + (()3.14159265358979323846 + + ) + +136  + #M_PI_2 + (()1.57079632679489661923 + + ) + +137  + #M_PI_4 + (()0.78539816339744830962 + + ) + +138  + #M_1_PI + (()0.31830988618379067154 + + ) + +139  + #M_2_PI + (()0.63661977236758134308 + + ) + +140  + #M_2_SQRTPI + (()1.12837916709551257390 + + ) + +141  + #M_SQRT2 + (()1.41421356237309504880 + + ) + +142  + #M_SQRT1_2 + (()0.70710678118654752440 + + ) + +144  + #MAXFLOAT + (()3.40282346638528860e+38) + + ) + +146  +signgam +; + +149 #i +__POSIX_VISIBLE + >= 201403 + +150  + #M_El + 2.718281828459045235360287471352662498L + + ) + +151  + #M_LOG2El + 1.442695040888963407359924681001892137L + + ) + +152  + #M_LOG10El + 0.434294481903251827651128918916605082L + + ) + +153  + #M_LN2l + 0.693147180559945309417232121458176568L + + ) + +154  + #M_LN10l + 2.302585092994045684017991454684364208L + + ) + +155  + #M_PIl + 3.141592653589793238462643383279502884L + + ) + +156  + #M_PI_2l + 1.570796326794896619231321691639751442L + + ) + +157  + #M_PI_4l + 0.785398163397448309615660845819875721L + + ) + +158  + #M_1_PIl + 0.318309886183790671537767526745028724L + + ) + +159  + #M_2_PIl + 0.636619772367581343075535053490057448L + + ) + +160  + #M_2_SQRTPIl + 1.128379167095512573896158903121545172L + + ) + +161  + #M_SQRT2l + 1.414213562373095048801688724209698079L + + ) + +162  + #M_SQRT1_2l + 0.707106781186547524400844362104849039L + + ) + +165 #i +__BSD_VISIBLE + + +166  + #HUGE + +MAXFLOAT + + + ) + +172  +acos +(); + +173  +as +(); + +174  + +(); + +175  +2 +(, ); + +176  +cos +(); + +177  +s +(); + +178  +n +(); + +180  +cosh +(); + +181  +sh +(); + +182  +nh +(); + +184  +exp +(); + +185  +exp +(, *); + +186  +ldexp +(, ); + +187  +log +(); + +188  +log10 +(); + +189  +modf +(, *); + +191  +pow +(, ); + +192  +sq +(); + +194  + +(); + +195  +bs +(); + +196  +o +(); + +197  +fmod +(, ); + +202 #i +__BSD_VISIBLE + || +__ISO_C_VISIBLE + >1999 || +__XPG_VISIBLE + + +203  +acosh +(); + +204  +ash +(); + +205  +h +(); + +207  +exp2 +(); + +208  +expm1 +(); + +209  +ogb +(); + +210  +log1p +(); + +211  +log2 +(); + +212  +logb +(); + +213  +slbn +(, ); + +214  +slb +(, ); + +216  +cb +(); + +217  +hyp +(, ); + +219  +f +(); + +220  +fc +(); + +221  +lgamma +(); + +222  +tgamma +(); + +224  +ìbyt +(); + +225  +rt +(); + +226  +̚t +(); + +227  +rt +(); + +228  +round +(); + +229  +ound +(); + +230  +round +(); + +231  +unc +(); + +233  +mad +(, ); + +234  +mquo +(, , *); + +236  +cysign +(, ); + +237  +n +(const *); + +238  +x +(, ); + +239  +xowd +(, ); + +241  +fdim +(, ); + +242  +fmax +(, ); + +243  +fm +(, ); + +245  +fma +(, , ); + +248 #i +__BSD_VISIBLE + || +__XPG_VISIBLE + + +249  +j0 +(); + +250  +j1 +(); + +251  +jn +(, ); + +252  +slb +(, ); + +253  +y0 +(); + +254  +y1 +(); + +255  +yn +(, ); + +258 #i +__BSD_VISIBLE + || +__XPG_VISIBLE + <= 500 + +259  +gamma +(); + +265 #i +__BSD_VISIBLE + + +266  +dm +(, ); + +267  +fe +(); + +273  +gamma_r +(, *); + +274  +lgamma_r +(, *); + +276  +scos +(, *, *); + +281  +signifind +(); + +287 #i +__ISO_C_VISIBLE + >= 1999 + +288  +acosf +(); + +289  +asf +(); + +290  +f +(); + +291  +2f +(, ); + +292  +cosf +(); + +293  +sf +(); + +294  +nf +(); + +296  +acoshf +(); + +297  +ashf +(); + +298  +hf +(); + +299  +coshf +(); + +300  +shf +(); + +301  +nhf +(); + +303  +expf +(); + +304  +exp2f +(); + +305  +expm1f +(); + +306  +expf +(, *); + +307  +ogbf +(); + +308  +ldexpf +(, ); + +309  +logf +(); + +310  +log10f +(); + +311  +log1pf +(); + +312  +log2f +(); + +313  +logbf +(); + +314  +modff +(, *); + +315  +slbnf +(, ); + +316  +slbf +(, ); + +318  +cbf +(); + +319  +bsf +(); + +320  +hypf +(, ); + +321  +powf +(, ); + +322  +sqf +(); + +324  +ff +(); + +325  +fcf +(); + +326  +lgammaf +(); + +327  +tgammaf +(); + +329  +f +(); + +330  +of +(); + +331  +ìbytf +(); + +332  +rtf +(); + +333  +̚tf +(); + +334  +rtf +(); + +335  +roundf +(); + +336  +oundf +(); + +337  +roundf +(); + +338  +uncf +(); + +340  +fmodf +(, ); + +341  +madf +(, ); + +342  +mquof +(, , *); + +344  +cysignf +(, ); + +345  +nf +(const *); + +346  +xf +(, ); + +347  +xowdf +(, ); + +349  +fdimf +(, ); + +350  +fmaxf +(, ); + +351  +fmf +(, ); + +353  +fmaf +(, , ); + +356 #i +__BSD_VISIBLE + || +__XPG_VISIBLE + + +357  +j0f +(); + +358  +j1f +(); + +359  +jnf +(, ); + +360  +slbf +(, ); + +361  +y0f +(); + +362  +y1f +(); + +363  +ynf +(, ); + +366 #i +__BSD_VISIBLE + || +__XPG_VISIBLE + <= 500 + +367  +gammaf +(); + +373 #i +__BSD_VISIBLE + + +374  +dmf +(, ); + +375  +fef +(); + +376  +isff +(); + +377  +if +(); + +384  +gammaf_r +(, *); + +385  +lgammaf_r +(, *); + +387  +scosf +(, *, *); + +392  +signifindf +(); + +398 #i +__ISO_C_VISIBLE + >= 1999 + +399  +aco +(); + +400  +asl +(); + +401  +l +(); + +402  +2l +(, ); + +403  +co +(); + +404  +sl +(); + +405  + +(); + +407  +acoshl +(); + +408  +ashl +(); + +409  +hl +(); + +410  +coshl +(); + +411  +shl +(); + +412  +nhl +(); + +414  +ex +(); + +415  +exp2l +(); + +416  +expm1l +(); + +417  +ex +(, *); + +418  +ogbl +(); + +419  +ldex +(, ); + +420  +logl +(); + +421  +log10l +(); + +422  +log1 +(); + +423  +log2l +(); + +424  +logbl +(); + +425  +mod +(, *); + +426  +slb +(, ); + +427  +slbl +(, ); + +429  +cbl +(); + +430  +b +(); + +431  +hypl +(, ); + +432  +powl +(, ); + +433  +sql +(); + +435  + +(); + +436  +f +(); + +437  +lgamm +(); + +438  +tgamm +(); + +440  +l +(); + +441  +ol +(); + +442  +ìby +(); + +443  +r +(); + +444  +(); + +445  +r +(); + +446  +roundl +(); + +447  +oundl +(); + +448  +roundl +(); + +449  +un +(); + +451  +fmodl +(, ); + +452  +madl +(, ); + +453  +mqu +(, , *); + +455  +cysig +(, ); + +456  + +(const *); + +457  +xl +(, ); + +458  +xowdl +(, ); + +460  +fdiml +(, ); + +461  +fmaxl +(, ); + +462  +fml +(, ); + +464  +fm +(, , ); + +470 #i +__BSD_VISIBLE + + +471  +sco +(, *, *); + +477  +__assify +(); + +478  +__assifyf +(); + +479  +__assifyl +(); + +480  +__isfe +(); + +481  +__isfef +(); + +482  +__isf +(); + +483  +__isf +(); + +484  +__isff +(); + +485  +__is +(); + +486  +__i +(); + +487  +__if +(); + +488  +__il +(); + +489  +__im +(); + +490  +__imf +(); + +491  +__iml +(); + +492  +__signb +(); + +493  +__signbf +(); + +494  +__signbl +(); + +495 + g__END_DECLS + + + @/usr/include/stdarg.h + +18 #ide +_STDARG_H_ + + +19  + #_STDARG_H_ + + + ) + +21  + ~<sys/cdefs.h +> + +25 #ide +__GNUC_VA_LIST + + +26  + #__GNUC_VA_LIST + + + ) + +27  +__but_va_li + + t__gnuc_va_li +; + +34  + #va_t +( + +, + + `__but_va_t +(p),a) + + ) + +35  + #va_d +( + + + `__but_va_d +(p)) + + ) + +36  + #va_g +( + +, +ty + + `__but_va_g +(p),y) + + ) + +37  + #__va_cy +( +d +, +c + + `__but_va_cy +((d),(c)) + + ) + +39  +__gnuc_va_li + + tva_li +; + +41 #i +__ISO_C_VISIBLE + >= 1999 + +42  + #va_cy +( +d +, +c + + `__va_cy +((d), (c)) + + ) + + @/usr/include/stdio.h + +38 #idef +_STDIO_H_ + + +39  + #_STDIO_H_ + + + ) + +41  + ~<sys/cdefs.h +> + +42  + ~<sys/_nu.h +> + +43  + ~<sys/_tys.h +> + +45 #i +__BSD_VISIBLE + || +__POSIX_VISIBLE + || +__XPG_VISIBLE + + +46  + ~<sys/tys.h +> + +49 #idef +_SIZE_T_DEFINED_ + + +50  + #_SIZE_T_DEFINED_ + + + ) + +51  +__size_t + + tsize_t +; + +54 #idef +_OFF_T_DEFINED_ + + +55  + #_OFF_T_DEFINED_ + + + ) + +56  +__off_t + + toff_t +; + +59  + #_FSTDIO + + + ) + +61  +off_t + + tos_t +; + +70  + s__sbuf + { + +71 * + m_ba +; + +72  + m_size +; + +99  + s__sFILE + { + +100 * + m_p +; + +101  + m_r +; + +102  + m_w +; + +103  + m_ags +; + +104  + m_fe +; + +105  +__sbuf + + m_bf +; + +106  + m_lbfsize +; + +109 * + m_cook +; + +110 (* + m_o +)(*); + +111 (* + m_ad +)(*, *, ); + +112 +os_t + (* +_ek +)(*, + mos_t +, ); + +113 (* + m_wre +)(*, const *, ); + +116  +__sbuf + + m_ext +; + +118 * + m_up +; + +119  + m_ur +; + +122  + m_ubuf +[3]; + +123  + m_nbuf +[1]; + +126  +__sbuf + + m_lb +; + +129  + m_blksize +; + +130 +os_t + + m_offt +; + +131 } + tFILE +; + +133 +__BEGIN_DECLS + + +134 +FILE + +__sF +[]; + +135 + g__END_DECLS + + +137  + #__SLBF + 0x0001 + + ) + +138  + #__SNBF + 0x0002 + + ) + +139  + #__SRD + 0x0004 + + ) + +140  + #__SWR + 0x0008 + + ) + +142  + #__SRW + 0x0010 + + ) + +143  + #__SEOF + 0x0020 + + ) + +144  + #__SERR + 0x0040 + + ) + +145  + #__SMBF + 0x0080 + + ) + +146  + #__SAPP + 0x0100 + + ) + +147  + #__SSTR + 0x0200 + + ) + +148  + #__SOPT + 0x0400 + + ) + +149  + #__SNPT + 0x0800 + + ) + +150  + #__SOFF + 0x1000 + + ) + +151  + #__SMOD + 0x2000 + + ) + +152  + #__SALC + 0x4000 + + ) + +153  + #__SIGN + 0x8000 + + ) + +164  + #_IOFBF + 0 + + ) + +165  + #_IOLBF + 1 + + ) + +166  + #_IONBF + 2 + + ) + +168  + #BUFSIZ + 1024 + + ) + +170  + #EOF + (-1) + + ) + +177  + #FOPEN_MAX + 20 + + ) + +178  + #FILENAME_MAX + 1024 + + ) + +181 #i +__BSD_VISIBLE + || +__XPG_VISIBLE + + +182  + #P_tmpd + "/tmp/" + + ) + +184  + #L_tmam + 1024 + + ) + +185  + #TMP_MAX + 0x7ffffff + + ) + +187 #ide +SEEK_SET + + +188  + #SEEK_SET + 0 + + ) + +190 #ide +SEEK_CUR + + +191  + #SEEK_CUR + 1 + + ) + +193 #ide +SEEK_END + + +194  + #SEEK_END + 2 + + ) + +197  + #d + (& +__sF +[0]) + + ) + +198  + #dout + (& +__sF +[1]) + + ) + +199  + #dr + (& +__sF +[2]) + + ) + +204 +__BEGIN_DECLS + + +205  + +( +FILE + *); + +206 #i +__POSIX_VISIBLE + >= 200809 + +207  + $dtf +(, cڡ * +__ri +, ...) + +208 + `__ibu__ +(( + $__fm__ + ( +tf +, 2, 3))) + +209 + `__ibu__ +(( + `__nnu__ + (2))); + +211  + `fo +( +FILE + *); + +212  + `of +( +FILE + *); + +213  + ` +( +FILE + *); + +214  + `fush +( +FILE + *); + +215  + `fgc +( +FILE + *); + +216  + `fgpos +( +FILE + *, +os_t + *); + +217 * + $fgs +(*, , +FILE + *) + +218 + `__ibu__ +(( + `__bounded__ + ( +__rg__ +,1,2))); + +219 +FILE + * + `fݒ +(const *, const *); + +220  + `rtf +( +FILE + *, cڡ * +__ri +, ...); + +221  + `utc +(, +FILE + *); + +222  + `uts +(cڡ *, +FILE + *); + +223 +size_t + + $d +(*, +size_t +, size_t, +FILE + *) + +224 + `__ibu__ +(( + `__bounded__ + ( +__size__ +,1,3,2))); + +225 +FILE + * + `eݒ +(const *, const *, FILE *); + +226  + `fsnf +( +FILE + *, const *, ...); + +227  + `fek +( +FILE + *, , ); + +228  + `feko +( +FILE + *, +off_t +, ); + +229  + `fos +( +FILE + *, cڡ +os_t + *); + +230  + `l +( +FILE + *); + +231 +off_t + + `lo +( +FILE + *); + +232 +size_t + + $fwre +(cڡ *, +size_t +, size_t, +FILE + *) + +233 + `__ibu__ +(( + `__bounded__ + ( +__size__ +,1,3,2))); + +234  + `gc +( +FILE + *); + +235  + `gch +(); + +236 #i +__POSIX_VISIBLE + >= 200809 + +237 +ssize_t + + `gdim +(** +__ri +, +size_t + * __restrict, , + +238 +FILE + * +__ri +); + +239 +ssize_t + + `gle +(** +__ri +, +size_t + * __restrict, + +240 +FILE + * +__ri +); + +242 #i +__BSD_VISIBLE + && ! + `defed +( +__SYS_ERRLIST +) + +243  + #__SYS_ERRLIST + + + ) + +245  +sys_ü +; + +246 * +sys_i +[]; + +248  + ` +(const *); + +249  + `tf +(cڡ * +__ri +, ...); + +250  + `putc +(, +FILE + *); + +251  + `putch +(); + +252  + `puts +(const *); + +253  + `move +(const *); + +254  + `me +(const *, const *); + +255 #i +__POSIX_VISIBLE + >= 200809 + +256  + `mt +(, const *, , const *); + +258  + `wd +( +FILE + *); + +259  + `snf +(const *, ...); + +260  + `tbuf +( +FILE + *, *); + +261  + `tvbuf +( +FILE + *, *, , +size_t +); + +262  + `rtf +(* +__ri +, const * __restrict, ...); + +263  + `ssnf +(const *, const *, ...); + +264 +FILE + * + `tmpfe +(); + +265 * + `tmam +(*); + +266  + `ungc +(, +FILE + *); + +267  + `vrtf +( +FILE + *, cڡ * +__ri +, +__va_li +); + +268  + `vtf +(cڡ * +__ri +, +__va_li +); + +269  + `vrtf +(* +__ri +, cڡ * __ri, +__va_li +); + +270 #i +__POSIX_VISIBLE + >= 200809 + +271  + $vdtf +(, cڡ * +__ri +, +__va_li +) + +272 + `__ibu__ +(( + $__fm__ + ( +tf +, 2, 0))) + +273 + `__ibu__ +(( + `__nnu__ + (2))); + +276 #i +__ISO_C_VISIBLE + >1999 || +__XPG_VISIBLE + >500 || +__BSD_VISIBLE + + +277  + $tf +(* +__ri +, +size_t +, const * __restrict, ...) + +278 + `__ibu__ +(( + $__fm__ + ( +tf +, 3, 4))) + +279 + `__ibu__ +(( + $__nnu__ + (3))) + +280 + `__ibu__ +(( + `__bounded__ + ( +__rg__ +,1,2))); + +281  + $vtf +(* +__ri +, +size_t +, const * __restrict, + +282 +__va_li +) + +283 + `__ibu__ +(( + $__fm__ + ( +tf +, 3, 0))) + +284 + `__ibu__ +(( + $__nnu__ + (3))) + +285 + `__ibu__ +(( + `__bounded__ +( +__rg__ +,1,2))); + +288 #i +__ISO_C_VISIBLE + >1999 || +__BSD_VISIBLE + + +289  + $vfsnf +( +FILE + *, cڡ *, +__va_li +) + +290 + `__ibu__ +(( + $__fm__ + ( +snf +, 2, 0))) + +291 + `__ibu__ +(( + `__nnu__ + (2))); + +292  + $vsnf +(cڡ *, +__va_li +) + +293 + `__ibu__ +(( + $__fm__ + ( +snf +, 1, 0))) + +294 + `__ibu__ +(( + `__nnu__ + (1))); + +295  + $vssnf +(cڡ *, cڡ *, +__va_li +) + +296 + `__ibu__ +(( + $__fm__ + ( +snf +, 2, 0))) + +297 + `__ibu__ +(( + `__nnu__ + (2))); + +300 +__END_DECLS + + +306 #i +__BSD_VISIBLE + || +__POSIX_VISIBLE + || +__XPG_VISIBLE + + +307  + #L_mid + 1024 + + ) + +309 +__BEGIN_DECLS + + +310 * + `mid +(*); + +311 +FILE + * + `fdݒ +(, const *); + +312  + `fo +( +FILE + *); + +314 #i +__POSIX_VISIBLE + >= 199209 + +315  + `po +( +FILE + *); + +316 +FILE + * + `pݒ +(const *, const *); + +319 #i +__POSIX_VISIBLE + >= 199506 + +320  + `ockfe +( +FILE + *); + +321  + `rylockfe +( +FILE + *); + +322  + `fuockfe +( +FILE + *); + +328  + `gc_uocked +( +FILE + *); + +329  + `gch_uocked +(); + +330  + `putc_uocked +(, +FILE + *); + +331  + `putch_uocked +(); + +334 #i +__POSIX_VISIBLE + >= 200809 + +335 +FILE + * + `fmemݒ +(*, +size_t +, const *); + +336 +FILE + * + `ݒ_memam +(**, +size_t + *); + +339 #i +__XPG_VISIBLE + + +340 * + `mam +(const *, const *); + +343 #i +__POSIX_VISIBLE + >202405 || +__BSD_VISIBLE + + +344  + $artf +(** +__ri +, const * __restrict, ...) + +345 + `__ibu__ +(( + $__fm__ + ( +tf +, 2, 3))) + +346 + `__ibu__ +(( + `__nnu__ + (2))); + +347  + $vartf +(** +__ri +, cڡ * __ri, +__va_li +) + +348 + `__ibu__ +(( + $__fm__ + ( +tf +, 2, 0))) + +349 + `__ibu__ +(( + `__nnu__ + (2))); + +351 +__END_DECLS + + +358 #i +__BSD_VISIBLE + + +359 +__BEGIN_DECLS + + +360 * + `fg +( +FILE + *, +size_t + *); + +361  + `urge +( +FILE + *); + +362  + `gw +( +FILE + *); + +363  + `putw +(, +FILE + *); + +364  + `tbufr +( +FILE + *, *, ); + +365  + `ebuf +( +FILE + *); + +366 +__END_DECLS + + +371 +__BEGIN_DECLS + + +372 +FILE + * + `funݒ +(const *, + +375 + $off_t + (*)(*, +off_t +, ), + +377 +__END_DECLS + + +378  + #ݒ +( +cook +, + + + `funݒ +(cook, fn, 0, 0, 0) + + ) + +379  + #fwݒ +( +cook +, + + + `funݒ +(cook, 0, fn, 0, 0) + + ) + +385 +__BEGIN_DECLS + + +386  + `__g +( +FILE + *); + +387  + `__swbuf +(, +FILE + *); + +388 +__END_DECLS + + +394  + #__sgc +( +p +(--)-> +_r + < 0 ? + `__g +: ()(*)-> +_p +++)) + + ) + +395  +__le +  + $__utc +( +_c +, +FILE + * +_p +) { + +396 i(-- +_p +-> +_w + >0 || (_p->_w >_p-> +_lbfsize + && () +_c + != '\n')) + +397  (* +_p +->_p++ = +_c +); + +399  ( + `__swbuf +( +_c +, +_p +)); + +400 + } +} + +402  + #__sof +( +p +(()-> +_ags + & +__SEOF +!0) + + ) + +403  + #__s +( +p +(()-> +_ags + & +__SERR +!0) + + ) + +404  + #__s +( +p +(()()-> +_ags + &~( +__SERR +| +__SEOF +))) + + ) + +405  + #__sfo +( +p +()-> +_fe +) + + ) + +407  +__ihaded +; + +409  + #of +( +p +(! +__ihaded + ? + `__sof +: ( +of +))) + + ) + +410  + # +( +p +(! +__ihaded + ? + `__s +: ( + +))) + + ) + +411  + # +( +p +(! +__ihaded + ? + `__s +: ( + +))) + + ) + +413 #i +__POSIX_VISIBLE + + +414  + #fo +( +p +(! +__ihaded + ? + `__sfo +: ( +fo +))) + + ) + +417  + #gc +( + +(! +__ihaded + ? + `__sgc +(: ( +gc +)()) + + ) + +419 #i +__BSD_VISIBLE + + +424  + #putc +( +x +, + +(! +__ihaded + ? + `__utc +(x, fp: ( +putc +)(x, fp)) + + ) + +427 #i +__POSIX_VISIBLE + >= 199506 + +428  + #gc_uocked +( + + + `__sgc +() + + ) + +433 #i +__BSD_VISIBLE + + +434  + #putc_uocked +( +x +, + + + `__utc +(x, fp) + + ) + +438  + #gch +( + `gc +( +d +) + + ) + +439  + #putch +( +x + + `putc +(x, +dout +) + + ) + +440  + #gch_uocked +( + `gc_uocked +( +d +) + + ) + +441  + #putch_uocked +( +c + + `putc_uocked +(c, +dout +) + + ) + + @/usr/include/stdlib.h + +35 #ide +_STDLIB_H_ + + +36  + #_STDLIB_H_ + + + ) + +38  + ~<sys/cdefs.h +> + +39  + ~<sys/_nu.h +> + +40  + ~<mache/_tys.h +> + +41 #i +__BSD_VISIBLE + + +42  + ~<sys/tys.h +> + +45 #idef +_SIZE_T_DEFINED_ + + +46  + #_SIZE_T_DEFINED_ + + + ) + +47  +__size_t + + tsize_t +; + +51 #i! +defed +( +_WCHAR_T_DEFINED_ +&& !defed( +__lulus +) + +52  + #_WCHAR_T_DEFINED_ + + + ) + +53  +__wch_t + + twch_t +; + +57  + mqu +; + +58  + mm +; + +59 } + tdiv_t +; + +62  + mqu +; + +63  + mm +; + +64 } + tldiv_t +; + +66 #i +__ISO_C_VISIBLE + >= 1999 + +68  + mqu +; + +69  + mm +; + +70 } + tdiv_t +; + +73 #i +__BSD_VISIBLE + + +75 +quad_t + + mqu +; + +76 +quad_t + + mm +; + +77 } + tqdiv_t +; + +80  + #EXIT_FAILURE + 1 + + ) + +81  + #EXIT_SUCCESS + 0 + + ) + +83  + #RAND_MAX + 0x7fffffff + + ) + +85  + #MB_CUR_MAX + + `__mb_cur_max +() + + ) + +91 #ifde +abs + + +92 #unde +abs + + +93 #wng +abs + +mao + +clides + +wh +bs( +y +, +undefg + + +96 +__BEGIN_DECLS + + +97 +__dd +  +abt +(); + +98  +abs +(); + +99  +ex +((*)()); + +100  + `of +(const *); + +101  + `oi +(const *); + +102  + ` +(const *); + +103 * + `bch +(cڡ *, cڡ *, +size_t +, size_t, + +105 * + `oc +( +size_t +, size_t); + +106 +div_t + + `div +(, ); + +107 +__dd +  + `ex +(); + +108 +__dd +  + `_Ex +(); + +109  + ` +(*); + +110 * + `gv +(const *); + +111  + `bs +(); + +112 +ldiv_t + + `ldiv +(, ); + +113 * + `mloc +( +size_t +); + +114 #i +__BSD_VISIBLE + + +115  + $zo +(*, +size_t +) + +116 + `__ibu__ + (( + `__bounded__ +( +__bufr__ +,1,2))); + +117 * + `oc_c +( +size_t +, size_t); + +118 * + `mloc_c +( +size_t +); + +119 * + `oay +(*, +size_t +, size_t, size_t); + +121  + `qst +(*, +size_t +, size_t, (*)(const *, const *)); + +122  + `nd +(); + +123 * + `loc +(*, +size_t +); + +124  + `d +(); + +125  + `d_dmiic +(); + +126  + `od +(cڡ * +__ri +, **__restrict); + +127  + `of +(cڡ * +__ri +, **__restrict); + +128  + ` +(cڡ * +__ri +, **__restrict, ); + +130 + `d +(cڡ * +__ri +, **__restrict); + +132 + `oul +(cڡ * +__ri +, **__restrict, ); + +133  + `syem +(const *); + +135 +size_t + + `__mb_cur_max +(); + +136  + `mbn +(cڡ *, +size_t +); + +137 +size_t + + `mbowcs +( +wch_t + *, const *, size_t); + +138  + `womb +(*, +wch_t +); + +139  + `mbtowc +( +wch_t + *, cڡ *, +size_t +); + +140 +size_t + + `wcombs +(*, cڡ +wch_t + *, size_t); + +145 #i +__BSD_VISIBLE + || +__POSIX_VISIBLE + >199506 || + `defed +( +_REENTRANT +) + +146  + `nd_r +(*); + +149 #i +__BSD_VISIBLE + || +__XPG_VISIBLE + >= 400 + +150  + `dnd48 +(); + +151  + `d48 +([3]); + +152  + `jnd48 +([3]); + +153  + `lcg48 +([7]); + +154  + `lcg48_dmiic +([7]); + +155  + `̪d48 +(); + +156  + `mnd48 +(); + +157  + `Īd48 +([3]); + +158 * + `ed48 +([3]); + +159 * + `ed48_dmiic +([3]); + +160  + `d48 +(); + +161  + `d48_dmiic +(); + +163  + `punv +(*); + +170 #i +__BSD_VISIBLE + || +__XPG_VISIBLE + < 700 + +171 * + `ecvt +(, , *, *); + +172 * + `fcvt +(, , *, *); + +173 * + `gcvt +(, , *); + +174 #i +__BSD_VISIBLE + || +__XPG_VISIBLE + >= 420 + +175 * + `mkmp +(*); + +179 #i +__BSD_VISIBLE + || +__XPG_VISIBLE + >= 420 + +180  + `a64l +(const *); + +181 * + `l64a +(); + +183 * + $e +(, *, +size_t +) + +184 + `__ibu__ +(( + `__bounded__ + ( +__rg__ +,2,3))); + +185  + `ndom +(); + +186 * + `te +(*); + +187  + `dom +(); + +188  + `dom_dmiic +(); + +190 * + $th +(const *, *) + +191 + `__ibu__ +(( + `__bounded__ + ( +__mbys__ +,2,1024))); + +196 #i +__BSD_VISIBLE + || +__XPG_VISIBLE + < 600 + +197  + `y +(); + +198 * + `vloc +( +size_t +); + +205 #i +__BSD_VISIBLE + || +__XPG_VISIBLE + >420 || +__POSIX_VISIBLE + >= 200809 + +206  + `mkemp +(*); + +212 #i +__ISO_C_VISIBLE + >= 1999 + +214 + `l +(const *); + +216 + `abs +(); + +217 +div_t + + +218 + `div +(, ); + +220 + `l +(cڡ * +__ri +, **__restrict, ); + +222 + `ou +(cڡ * +__ri +, **__restrict, ); + +225 #i +__ISO_C_VISIBLE + >= 2011 + +227 + `igd_loc +( +size_t +, size_t); + +233 #i +__BSD_VISIBLE + || +__POSIX_VISIBLE + >= 200112 + +234  + `posix_memign +(**, +size_t +, size_t); + +235  + `nv +(const *, const *, ); + +236  + `unnv +(const *); + +238 #i +__XPG_VISIBLE + >420 || +__POSIX_VISIBLE + >= 200112 + +239 * + `ame +(); + +240  + `g +(); + +241  + `uock +(); + +243 #i +__POSIX_VISIBLE + >= 200112 + +244  + `posix_ݒ +(); + +250 #i +__BSD_VISIBLE + || +__POSIX_VISIBLE + >= 200809 + +251 * + `mkdmp +(*); + +254 #i +__XPG_VISIBLE + >420 || +__POSIX_VISIBLE + >= 200809 + +255  + `gsubt +(**, * const *, **); + +261 #i +__POSIX_VISIBLE + >202405 || +__BSD_VISIBLE + + +262  + `mkoemp +(*, ); + +263 * + `loay +(*, +size_t +, size_t); + +266 #i +__BSD_VISIBLE + + +267  + #lo +( +n + + `__but_lo +) + + ) + +269 * + `gbsize +(*, *); + +270 * + `cgp +(*, const *, ); + +271  + `cgo +(); + +272  + `cgt +(**, **, const *); + +273  + `cgf +(**, **); + +274  + `cgmch +(*, const *); + +275  + `cgxt +(**, **); + +276  + `cgnum +(*, const *, *); + +277  + `cgt +(const *); + +278  + `cgudb +(); + +279  + `cgr +(*, const *, **); + +280  + `cgur +(*, const *, **); + +282  + `dm +(, ); + +283 * + `devme +( +dev_t +, +mode_t +); + +284  + `gldavg +([], ); + +287 + `gogme +(); + +288  + `rogme +(const *); + +290 * +subݏrg +; + +292 * + `mkdmps +(*, ); + +293  + `mkemps +(*, ); + +294  + `mkoemps +(*, , ); + +296  + `hpst +(*, +size_t +, size_t, (*)(const *, const *)); + +297  + `mgest +(*, +size_t +, size_t, (*)(const *, const *)); + +298  + `dixst +(const **, , const *, + +300  + `adixst +(const **, , const *, + +303  + `domdev +(); + +305 + `um +(const *, , , const **); + +307  + $ro +(const *, ...) + +308 + `__ibu__ +(( + `__fm__ + ( +__tf__ +, 1, 2))); + +310 +quad_t + + `qabs +(quad_t); + +311 +qdiv_t + + `qdiv +( +quad_t +, quad_t); + +312 +quad_t + + `oq +(cڡ * +__ri +, **__restrict, ); + +313 +u_quad_t + + `ouq +(cڡ * +__ri +, **__restrict, ); + +315 +ut32_t + + `c4ndom +(); + +316 +ut32_t + + `c4ndom_unifm +(uint32_t); + +317  + $c4ndom_buf +(*, +size_t +) + +318 + `__ibu__ +(( + `__bounded__ + ( +__bufr__ +,1,2))); + +322 +__END_DECLS + + + @/usr/include/time.h + +41 #ide +_TIME_H_ + + +42  + #_TIME_H_ + + + ) + +44  + ~<sys/cdefs.h +> + +45  + ~<sys/_nu.h +> + +46  + ~<sys/_tys.h +> + +47  + ~<sys/_time.h +> + +49 #idef +_CLOCK_T_DEFINED_ + + +50  + #_CLOCK_T_DEFINED_ + + + ) + +51  +__ock_t + + tock_t +; + +54 #idef +_TIME_T_DEFINED_ + + +55  + #_TIME_T_DEFINED_ + + + ) + +56  +__time_t + + ttime_t +; + +59 #idef +_SIZE_T_DEFINED_ + + +60  + #_SIZE_T_DEFINED_ + + + ) + +61  +__size_t + + tsize_t +; + +64 #i +__POSIX_VISIBLE + > 0 && __POSIX_VISIBLE < 200112 || +__BSD_VISIBLE + + +69  + #CLK_TCK + 100 + + ) + +72 #i +__POSIX_VISIBLE + >= 199309 + +73 #idef +_CLOCKID_T_DEFINED_ + + +74  + #_CLOCKID_T_DEFINED_ + + + ) + +75  +__ockid_t + + tockid_t +; + +78 #idef +_TIMER_T_DEFINED_ + + +79  + #_TIMER_T_DEFINED_ + + + ) + +80  +__tim_t + + ttim_t +; + +84 #i +__POSIX_VISIBLE + >= 200112 + +85 #idef +_PID_T_DEFINED_ + + +86  + #_PID_T_DEFINED_ + + + ) + +87  +__pid_t + + tpid_t +; + +91 #i +__POSIX_VISIBLE + >= 200809 + +92 #idef +_LOCALE_T_DEFINED_ + + +93  + #_LOCALE_T_DEFINED_ + + + ) + +94 * + tlo_t +; + +98  + stm + { + +99  + mtm_c +; + +100  + mtm_m +; + +101  + mtm_hour +; + +102  + mtm_mday +; + +103  + mtm_m +; + +104  + mtm_yr +; + +105  + mtm_wday +; + +106  + mtm_yday +; + +107  + mtm_isd +; + +108  + mtm_gmtoff +; + +109 * + mtm_ze +; + +112 +__BEGIN_DECLS + + +113 * +asime +(cڡ  +tm + *); + +114 +ock_t + +ock +(); + +115 * +ime +(cڡ +time_t + *); + +116  +difime +( +time_t +,ime_t); + +117  +tm + * +gmtime +(cڡ +time_t + *); + +118  +tm + * +loime +(cڡ +time_t + *); + +119 +time_t + +mktime +( +tm + *); + +120 +size_t + + $rime +(* +__ri +, +size_t +, const *__restrict, + +121 cڡ  +tm + * +__ri +) + +122 + `__ibu__ + (( + `__bounded__ +( +__rg__ +,1,2))); + +123 +time_t + + `time +(time_t *); + +125 #i +__XPG_VISIBLE + >= 300 + +126  +daylight +; + +127  +timeze +; + +129 #i +__XPG_VISIBLE + >= 400 + +130 * + `time +(cڡ * +__ri +, const *__restrict, + +131  +tm + * +__ri +); + +134 #i +__POSIX_VISIBLE + >= 199506 + +135 * + $asime_r +(cڡ  +tm + * +__ri +, *__restrict) + +136 + `__ibu__ + (( + `__bounded__ +( +__mbys__ +,2,26))); + +137 * + $ime_r +(cڡ +time_t + *, *) + +138 + `__ibu__ + (( + `__bounded__ +( +__mbys__ +,2,26))); + +139  +tm + * + `gmtime_r +(cڡ +time_t + * +__ri +, tm *__restrict); + +140  +tm + * + `loime_r +(cڡ +time_t + * +__ri +, tm *__restrict); + +143 #i +__POSIX_VISIBLE + + +144 * +tzme +[2]; + +145  + `tzt +(); + +148 #i +__POSIX_VISIBLE + >= 199309 + +149  + `ock_gs +( +ockid_t +,  +timeec + *); + +150  + `ock_gtime +( +ockid_t +,  +timeec + *); + +151  + `ock_ime +( +ockid_t +, cڡ  +timeec + *); + +152  + `nop +(cڡ  +timeec + *, timespec *); + +155 #i +__POSIX_VISIBLE + >= 200112 + +156  + `ock_guockid +( +pid_t +, +ockid_t + *); + +159 #i +__POSIX_VISIBLE + >= 200809 + +160 +size_t + + $rime_l +(* +__ri +, +size_t +, const *__restrict, + +161 cڡ  +tm + * +__ri +, +lo_t +) + +162 + `__ibu__ + (( + `__bounded__ +( +__rg__ +,1,2))); + +165 #i +__ISO_C_VISIBLE + >= 2011 + +166  + #TIME_UTC + 1 + + ) + +167  + `timeec_g +( +timeec + * +_ts +,  +_ba +); + +170 #i +__BSD_VISIBLE + + +171  + `tztwl +(); + +172 +time_t + + `timol +( +tm + *); + +173 +time_t + + `timegm +( +tm + *); + +174 +time_t + + `timeoff +( +tm + *, const ); + +176 +__END_DECLS + + + @/usr/include/unistd.h + +35 #ide +_UNISTD_H_ + + +36  + #_UNISTD_H_ + + + ) + +38  + ~<sys/_nu.h +> + +39  + ~<sys/tys.h +> + +40  + ~<sys/unid.h +> + +42  + #STDIN_FILENO + 0 + + ) + +43  + #STDOUT_FILENO + 1 + + ) + +44  + #STDERR_FILENO + 2 + + ) + +46 #i +__XPG_VISIBLE + || +__POSIX_VISIBLE + >= 200112 + +47  + #F_ULOCK + 0 + + ) + +48  + #F_LOCK + 1 + + ) + +49  + #F_TLOCK + 2 + + ) + +50  + #F_TEST + 3 + + ) + +65  + #_POSIX_ADVISORY_INFO + (-1) + + ) + +66  + #_POSIX_ASYNCHRONOUS_IO + (-1) + + ) + +67  + #_POSIX_BARRIERS + 200112L + + ) + +68  + #_POSIX_CHOWN_RESTRICTED + 1 + + ) + +69  + #_POSIX_CLOCK_SELECTION + (-1) + + ) + +70  + #_POSIX_CPUTIME + 200809L + + ) + +71  + #_POSIX_FSYNC + 200112L + + ) + +72  + #_POSIX_IPV6 + 0 + + ) + +73  + #_POSIX_JOB_CONTROL + 1 + + ) + +74  + #_POSIX_MAPPED_FILES + 200112L + + ) + +75  + #_POSIX_MEMLOCK + 200112L + + ) + +76  + #_POSIX_MEMLOCK_RANGE + 200112L + + ) + +77  + #_POSIX_MEMORY_PROTECTION + 200112L + + ) + +78  + #_POSIX_MESSAGE_PASSING + (-1) + + ) + +79  + #_POSIX_MONOTONIC_CLOCK + 200112L + + ) + +80  + #_POSIX_NO_TRUNC + 1 + + ) + +81  + #_POSIX_PRIORITIZED_IO + (-1) + + ) + +82  + #_POSIX_PRIORITY_SCHEDULING + (-1) + + ) + +83  + #_POSIX_RAW_SOCKETS + 200112L + + ) + +84  + #_POSIX_READER_WRITER_LOCKS + 200112L + + ) + +85  + #_POSIX_REALTIME_SIGNALS + (-1) + + ) + +86  + #_POSIX_REGEXP + 1 + + ) + +87  + #_POSIX_SAVED_IDS + 1 + + ) + +88  + #_POSIX_SEMAPHORES + 200112L + + ) + +89  + #_POSIX_SHARED_MEMORY_OBJECTS + 200809L + + ) + +90  + #_POSIX_SHELL + 1 + + ) + +91  + #_POSIX_SPAWN + 200112L + + ) + +92  + #_POSIX_SPIN_LOCKS + 200112L + + ) + +93  + #_POSIX_SPORADIC_SERVER + (-1) + + ) + +94  + #_POSIX_SYNCHRONIZED_IO + (-1) + + ) + +95  + #_POSIX_THREAD_ATTR_STACKADDR + 200112L + + ) + +96  + #_POSIX_THREAD_ATTR_STACKSIZE + 200112L + + ) + +97  + #_POSIX_THREAD_CPUTIME + 200809L + + ) + +98  + #_POSIX_THREAD_PRIO_INHERIT + (-1) + + ) + +99  + #_POSIX_THREAD_PRIO_PROTECT + (-1) + + ) + +100  + #_POSIX_THREAD_PRIORITY_SCHEDULING + (-1) + + ) + +101  + #_POSIX_THREAD_PROCESS_SHARED + (-1) + + ) + +102  + #_POSIX_THREAD_ROBUST_PRIO_INHERIT + (-1) + + ) + +103  + #_POSIX_THREAD_ROBUST_PRIO_PROTECT + (-1) + + ) + +104  + #_POSIX_THREAD_SAFE_FUNCTIONS + 200112L + + ) + +105  + #_POSIX_THREAD_SPORADIC_SERVER + (-1) + + ) + +106  + #_POSIX_THREADS + 200112L + + ) + +107  + #_POSIX_TIMEOUTS + 200112L + + ) + +108  + #_POSIX_TIMERS + (-1) + + ) + +109  + #_POSIX_TRACE + (-1) + + ) + +110  + #_POSIX_TRACE_EVENT_FILTER + (-1) + + ) + +111  + #_POSIX_TRACE_INHERIT + (-1) + + ) + +112  + #_POSIX_TRACE_LOG + (-1) + + ) + +113  + #_POSIX_TYPED_MEMORY_OBJECTS + (-1) + + ) + +114  + #_POSIX2_C_BIND + 200112L + + ) + +115  + #_POSIX2_C_DEV + (-1 + + ) + +116  + #_POSIX2_CHAR_TERM + 1 + + ) + +117  + #_POSIX2_FORT_DEV + (-1 + + ) + +118  + #_POSIX2_FORT_RUN + (-1 + + ) + +119  + #_POSIX2_LOCALEDEF + (-1) + + ) + +120  + #_POSIX2_PBS + (-1) + + ) + +121  + #_POSIX2_PBS_ACCOUNTING + (-1) + + ) + +122  + #_POSIX2_PBS_CHECKPOINT + (-1) + + ) + +123  + #_POSIX2_PBS_LOCATE + (-1) + + ) + +124  + #_POSIX2_PBS_MESSAGE + (-1) + + ) + +125  + #_POSIX2_PBS_TRACK + (-1) + + ) + +126  + #_POSIX2_SW_DEV + 200112L + + ) + +127  + #_POSIX2_UPE + 200112L + + ) + +128  + #_POSIX_V6_ILP32_OFF32 + (-1) + + ) + +129  + #_POSIX_V6_ILP32_OFFBIG + 0 + + ) + +130  + #_POSIX_V6_LP64_OFF64 + 0 + + ) + +131  + #_POSIX_V6_LPBIG_OFFBIG + 0 + + ) + +132  + #_POSIX_V7_ILP32_OFF32 + (-1) + + ) + +133  + #_POSIX_V7_ILP32_OFFBIG + 0 + + ) + +134  + #_POSIX_V7_LP64_OFF64 + 0 + + ) + +135  + #_POSIX_V7_LPBIG_OFFBIG + 0 + + ) + +137  + #_XOPEN_CRYPT + 1 + + ) + +138  + #_XOPEN_ENH_I18N + (-1 + + ) + +139  + #_XOPEN_LEGACY + (-1) + + ) + +140  + #_XOPEN_REALTIME + (-1) + + ) + +141  + #_XOPEN_REALTIME_THREADS + (-1) + + ) + +142  + #_XOPEN_SHM + 1 + + ) + +143  + #_XOPEN_STREAMS + (-1) + + ) + +144  + #_XOPEN_UUCP + (-1) + + ) + +145  + #_XOPEN_UNIX + (-1) + + ) + +148  + #_POSIX2_VERSION + 200809L + + ) + +153  + #_SC_ARG_MAX + 1 + + ) + +154  + #_SC_CHILD_MAX + 2 + + ) + +155  + #_SC_CLK_TCK + 3 + + ) + +156  + #_SC_NGROUPS_MAX + 4 + + ) + +157  + #_SC_OPEN_MAX + 5 + + ) + +158  + #_SC_JOB_CONTROL + 6 + + ) + +159  + #_SC_SAVED_IDS + 7 + + ) + +160  + #_SC_VERSION + 8 + + ) + +161  + #_SC_BC_BASE_MAX + 9 + + ) + +162  + #_SC_BC_DIM_MAX + 10 + + ) + +163  + #_SC_BC_SCALE_MAX + 11 + + ) + +164  + #_SC_BC_STRING_MAX + 12 + + ) + +165  + #_SC_COLL_WEIGHTS_MAX + 13 + + ) + +166  + #_SC_EXPR_NEST_MAX + 14 + + ) + +167  + #_SC_LINE_MAX + 15 + + ) + +168  + #_SC_RE_DUP_MAX + 16 + + ) + +169  + #_SC_2_VERSION + 17 + + ) + +170  + #_SC_2_C_BIND + 18 + + ) + +171  + #_SC_2_C_DEV + 19 + + ) + +172  + #_SC_2_CHAR_TERM + 20 + + ) + +173  + #_SC_2_FORT_DEV + 21 + + ) + +174  + #_SC_2_FORT_RUN + 22 + + ) + +175  + #_SC_2_LOCALEDEF + 23 + + ) + +176  + #_SC_2_SW_DEV + 24 + + ) + +177  + #_SC_2_UPE + 25 + + ) + +178  + #_SC_STREAM_MAX + 26 + + ) + +179  + #_SC_TZNAME_MAX + 27 + + ) + +180  + #_SC_PAGESIZE + 28 + + ) + +181  + #_SC_PAGE_SIZE + +_SC_PAGESIZE + + + ) + +182  + #_SC_FSYNC + 29 + + ) + +183  + #_SC_XOPEN_SHM + 30 + + ) + +184  + #_SC_SEM_NSEMS_MAX + 31 + + ) + +185  + #_SC_SEM_VALUE_MAX + 32 + + ) + +186  + #_SC_HOST_NAME_MAX + 33 + + ) + +187  + #_SC_MONOTONIC_CLOCK + 34 + + ) + +188  + #_SC_2_PBS + 35 + + ) + +189  + #_SC_2_PBS_ACCOUNTING + 36 + + ) + +190  + #_SC_2_PBS_CHECKPOINT + 37 + + ) + +191  + #_SC_2_PBS_LOCATE + 38 + + ) + +192  + #_SC_2_PBS_MESSAGE + 39 + + ) + +193  + #_SC_2_PBS_TRACK + 40 + + ) + +194  + #_SC_ADVISORY_INFO + 41 + + ) + +195  + #_SC_AIO_LISTIO_MAX + 42 + + ) + +196  + #_SC_AIO_MAX + 43 + + ) + +197  + #_SC_AIO_PRIO_DELTA_MAX + 44 + + ) + +198  + #_SC_ASYNCHRONOUS_IO + 45 + + ) + +199  + #_SC_ATEXIT_MAX + 46 + + ) + +200  + #_SC_BARRIERS + 47 + + ) + +201  + #_SC_CLOCK_SELECTION + 48 + + ) + +202  + #_SC_CPUTIME + 49 + + ) + +203  + #_SC_DELAYTIMER_MAX + 50 + + ) + +204  + #_SC_IOV_MAX + 51 + + ) + +205  + #_SC_IPV6 + 52 + + ) + +206  + #_SC_MAPPED_FILES + 53 + + ) + +207  + #_SC_MEMLOCK + 54 + + ) + +208  + #_SC_MEMLOCK_RANGE + 55 + + ) + +209  + #_SC_MEMORY_PROTECTION + 56 + + ) + +210  + #_SC_MESSAGE_PASSING + 57 + + ) + +211  + #_SC_MQ_OPEN_MAX + 58 + + ) + +212  + #_SC_MQ_PRIO_MAX + 59 + + ) + +213  + #_SC_PRIORITIZED_IO + 60 + + ) + +214  + #_SC_PRIORITY_SCHEDULING + 61 + + ) + +215  + #_SC_RAW_SOCKETS + 62 + + ) + +216  + #_SC_READER_WRITER_LOCKS + 63 + + ) + +217  + #_SC_REALTIME_SIGNALS + 64 + + ) + +218  + #_SC_REGEXP + 65 + + ) + +219  + #_SC_RTSIG_MAX + 66 + + ) + +220  + #_SC_SEMAPHORES + 67 + + ) + +221  + #_SC_SHARED_MEMORY_OBJECTS + 68 + + ) + +222  + #_SC_SHELL + 69 + + ) + +223  + #_SC_SIGQUEUE_MAX + 70 + + ) + +224  + #_SC_SPAWN + 71 + + ) + +225  + #_SC_SPIN_LOCKS + 72 + + ) + +226  + #_SC_SPORADIC_SERVER + 73 + + ) + +227  + #_SC_SS_REPL_MAX + 74 + + ) + +228  + #_SC_SYNCHRONIZED_IO + 75 + + ) + +229  + #_SC_SYMLOOP_MAX + 76 + + ) + +230  + #_SC_THREAD_ATTR_STACKADDR + 77 + + ) + +231  + #_SC_THREAD_ATTR_STACKSIZE + 78 + + ) + +232  + #_SC_THREAD_CPUTIME + 79 + + ) + +233  + #_SC_THREAD_DESTRUCTOR_ITERATIONS + 80 + + ) + +234  + #_SC_THREAD_KEYS_MAX + 81 + + ) + +235  + #_SC_THREAD_PRIO_INHERIT + 82 + + ) + +236  + #_SC_THREAD_PRIO_PROTECT + 83 + + ) + +237  + #_SC_THREAD_PRIORITY_SCHEDULING + 84 + + ) + +238  + #_SC_THREAD_PROCESS_SHARED + 85 + + ) + +239  + #_SC_THREAD_ROBUST_PRIO_INHERIT + 86 + + ) + +240  + #_SC_THREAD_ROBUST_PRIO_PROTECT + 87 + + ) + +241  + #_SC_THREAD_SPORADIC_SERVER + 88 + + ) + +242  + #_SC_THREAD_STACK_MIN + 89 + + ) + +243  + #_SC_THREAD_THREADS_MAX + 90 + + ) + +244  + #_SC_THREADS + 91 + + ) + +245  + #_SC_TIMEOUTS + 92 + + ) + +246  + #_SC_TIMER_MAX + 93 + + ) + +247  + #_SC_TIMERS + 94 + + ) + +248  + #_SC_TRACE + 95 + + ) + +249  + #_SC_TRACE_EVENT_FILTER + 96 + + ) + +250  + #_SC_TRACE_EVENT_NAME_MAX + 97 + + ) + +251  + #_SC_TRACE_INHERIT + 98 + + ) + +252  + #_SC_TRACE_LOG + 99 + + ) + +253  + #_SC_GETGR_R_SIZE_MAX + 100 + + ) + +254  + #_SC_GETPW_R_SIZE_MAX + 101 + + ) + +255  + #_SC_LOGIN_NAME_MAX + 102 + + ) + +256  + #_SC_THREAD_SAFE_FUNCTIONS + 103 + + ) + +257  + #_SC_TRACE_NAME_MAX + 104 + + ) + +258  + #_SC_TRACE_SYS_MAX + 105 + + ) + +259  + #_SC_TRACE_USER_EVENT_MAX + 106 + + ) + +260  + #_SC_TTY_NAME_MAX + 107 + + ) + +261  + #_SC_TYPED_MEMORY_OBJECTS + 108 + + ) + +262  + #_SC_V6_ILP32_OFF32 + 109 + + ) + +263  + #_SC_V6_ILP32_OFFBIG + 110 + + ) + +264  + #_SC_V6_LP64_OFF64 + 111 + + ) + +265  + #_SC_V6_LPBIG_OFFBIG + 112 + + ) + +266  + #_SC_V7_ILP32_OFF32 + 113 + + ) + +267  + #_SC_V7_ILP32_OFFBIG + 114 + + ) + +268  + #_SC_V7_LP64_OFF64 + 115 + + ) + +269  + #_SC_V7_LPBIG_OFFBIG + 116 + + ) + +270  + #_SC_XOPEN_CRYPT + 117 + + ) + +271  + #_SC_XOPEN_ENH_I18N + 118 + + ) + +272  + #_SC_XOPEN_LEGACY + 119 + + ) + +273  + #_SC_XOPEN_REALTIME + 120 + + ) + +274  + #_SC_XOPEN_REALTIME_THREADS + 121 + + ) + +275  + #_SC_XOPEN_STREAMS + 122 + + ) + +276  + #_SC_XOPEN_UNIX + 123 + + ) + +277  + #_SC_XOPEN_UUCP + 124 + + ) + +278  + #_SC_XOPEN_VERSION + 125 + + ) + +280  + #_SC_PHYS_PAGES + 500 + + ) + +281  + #_SC_AVPHYS_PAGES + 501 + + ) + +282  + #_SC_NPROCESSORS_CONF + 502 + + ) + +283  + #_SC_NPROCESSORS_ONLN + 503 + + ) + +286  + #_CS_PATH + 1 + + ) + +287  + #_CS_POSIX_V6_ILP32_OFF32_CFLAGS + 2 + + ) + +288  + #_CS_POSIX_V6_ILP32_OFF32_LDFLAGS + 3 + + ) + +289  + #_CS_POSIX_V6_ILP32_OFF32_LIBS + 4 + + ) + +290  + #_CS_POSIX_V6_ILP32_OFFBIG_CFLAGS + 5 + + ) + +291  + #_CS_POSIX_V6_ILP32_OFFBIG_LDFLAGS + 6 + + ) + +292  + #_CS_POSIX_V6_ILP32_OFFBIG_LIBS + 7 + + ) + +293  + #_CS_POSIX_V6_LP64_OFF64_CFLAGS + 8 + + ) + +294  + #_CS_POSIX_V6_LP64_OFF64_LDFLAGS + 9 + + ) + +295  + #_CS_POSIX_V6_LP64_OFF64_LIBS + 10 + + ) + +296  + #_CS_POSIX_V6_LPBIG_OFFBIG_CFLAGS + 11 + + ) + +297  + #_CS_POSIX_V6_LPBIG_OFFBIG_LDFLAGS + 12 + + ) + +298  + #_CS_POSIX_V6_LPBIG_OFFBIG_LIBS + 13 + + ) + +299  + #_CS_POSIX_V6_WIDTH_RESTRICTED_ENVS + 14 + + ) + +300  + #_CS_V6_ENV + 15 + + ) + +301  + #_CS_POSIX_V7_ILP32_OFF32_CFLAGS + 16 + + ) + +302  + #_CS_POSIX_V7_ILP32_OFF32_LDFLAGS + 17 + + ) + +303  + #_CS_POSIX_V7_ILP32_OFF32_LIBS + 18 + + ) + +304  + #_CS_POSIX_V7_ILP32_OFFBIG_CFLAGS + 19 + + ) + +305  + #_CS_POSIX_V7_ILP32_OFFBIG_LDFLAGS + 20 + + ) + +306  + #_CS_POSIX_V7_ILP32_OFFBIG_LIBS + 21 + + ) + +307  + #_CS_POSIX_V7_LP64_OFF64_CFLAGS + 22 + + ) + +308  + #_CS_POSIX_V7_LP64_OFF64_LDFLAGS + 23 + + ) + +309  + #_CS_POSIX_V7_LP64_OFF64_LIBS + 24 + + ) + +310  + #_CS_POSIX_V7_LPBIG_OFFBIG_CFLAGS + 25 + + ) + +311  + #_CS_POSIX_V7_LPBIG_OFFBIG_LDFLAGS + 26 + + ) + +312  + #_CS_POSIX_V7_LPBIG_OFFBIG_LIBS + 27 + + ) + +313  + #_CS_POSIX_V7_THREADS_CFLAGS + 28 + + ) + +314  + #_CS_POSIX_V7_THREADS_LDFLAGS + 29 + + ) + +315  + #_CS_POSIX_V7_WIDTH_RESTRICTED_ENVS + 30 + + ) + +316  + #_CS_V7_ENV + 31 + + ) + +318 #idef +_INTPTR_T_DEFINED_ + + +319  + #_INTPTR_T_DEFINED_ + + + ) + +320  +___t + + t_t +; + +323 +__BEGIN_DECLS + + +324 +__dd +  +_ex +(); + +325  +acss +(const *, ); + +326  +m +(); + +327  +chd +(const *); + +328  +chown +(cڡ *, +uid_t +, +gid_t +); + +329  +o +(); + +330  +dup +(); + +331  +dup2 +(, ); + +332  + $exe +(const *, const *, ...) + +333 + `__ibu__ +(( +____ +)); + +334  + `exee +(const *, const *, ...); + +335  + $exep +(const *, const *, ...) + +336 + `__ibu__ +(( +____ +)); + +337  + `execv +(const *, *const *); + +338  + `execve +(const *, *const *, *const *); + +339  + `execvp +(const *, *const *); + +340 #i +__BSD_VISIBLE + + +341  + `execv +(const *, *const *, *const *); + +343 +pid_t + + `fk +(); + +344  + `hcf +(, ); + +345 * + $gcwd +(*, +size_t +) + +346 + `__ibu__ +(( + `__bounded__ +( +__rg__ +,1,2))); + +347 +gid_t + + `gegid +(); + +348 +uid_t + + `geuid +(); + +349 +gid_t + + `ggid +(); + +350  + `ggroups +(, +gid_t + *); + +351 * + `glog +(); + +352 +pid_t + + `gpg +(); + +353 +pid_t + + `gpid +(); + +354 +pid_t + + `gid +(); + +355 +uid_t + + `guid +(); + +356  + `iy +(); + +357  + `lk +(const *, const *); + +358 +off_t + + `lek +(, off_t, ); + +359  + `thcf +(const *, ); + +360 #i +__BSD_VISIBLE + + +361  + `thct +(, const *, , ); + +363  + `u +(); + +364  + `pe +(*); + +365 +ssize_t + + $ad +(, *, +size_t +) + +366 + `__ibu__ +(( + `__bounded__ +( +__bufr__ +,2,3))); + +367  + `rmd +(const *); + +368  + `tgid +( +gid_t +); + +369  + `tuid +( +uid_t +); + +370  + `p +(); + +371  + `syscf +(); + +372 +pid_t + + `tcgpg +(); + +373  + `tcg +(, +pid_t +); + +374 * + `yme +(); + +375  + `uƚk +(const *); + +376 +ssize_t + + $wre +(, cڡ *, +size_t +) + +377 + `__ibu__ +(( + `__bounded__ +( +__bufr__ +,2,3))); + +379 #i +__POSIX_VISIBLE + || +__XPG_VISIBLE + >= 300 + +380 +pid_t + + `tsid +(); + +381  + `gid +( +pid_t +,id_t); + +384 #i +__POSIX_VISIBLE + >199209 || +__XPG_VISIBLE + + +385 +size_t + + $cfr +(, *, +size_t +) + +386 + `__ibu__ +(( + `__bounded__ +( +__rg__ +,2,3))); + +387 #ide +_GETOPT_DEFINED_ + + +388  + #_GETOPT_DEFINED_ + + + ) + +389  + `gt +(, * const *, const *); + +390 * +ݏrg +; + +391  +, +td +, +tt +, +݌et +; + +395 #i +__POSIX_VISIBLE + >199506 || +__XPG_VISIBLE + + +396  + `fsync +(); + +397  + `run +(, +off_t +); + +398  + $glog_r +(*, +size_t +) + +399 + `__ibu__ +(( + `__bounded__ +( +__rg__ +,1,2))); + +400 +ssize_t + + $adlk +(cڡ * +__ri +, * __ri, +size_t +) + +401 + `__ibu__ + (( + `__bounded__ +( +__rg__ +,2,3))); + +403 #i +__POSIX_VISIBLE + >= 199506 + +404  + `fdasync +(); + +407 #i +__XPG_VISIBLE + || +__BSD_VISIBLE + + +408 * + `y +(const *, const *); + +409  + `fchd +(); + +410  + `fchown +(, +uid_t +, +gid_t +); + +411  + `ghoid +(); + +412 * + $gwd +(*) + +413 + `__ibu__ + (( + `__bounded__ +( +__mbys__ +,1,1024))); + +414  + `lchown +(cڡ *, +uid_t +, +gid_t +); + +415  + `mkemp +(*); + +416 * + `mkmp +(*); + +417  + `ni +(); + +418  + `egid +( +gid_t +, gid_t); + +419  + `euid +( +uid_t +, uid_t); + +420  + `swab +(cڡ * +__ri +, *__ri, +ssize_t +); + +421  + `sync +(); + +422  + `un +(cڡ *, +off_t +); + +423 +ucds_t + + `um +(useconds_t, useconds_t); + +424  + `up +( +ucds_t +); + +425 +pid_t + + `vfk +(); + +428 #i +__POSIX_VISIBLE + >200809 || +__XPG_VISIBLE + >= 420 + +429 +pid_t + + `gpgid +(pid_t); + +430 +pid_t + + `gsid +(pid_t); + +433 #i +__XPG_VISIBLE + >= 500 + +434 +ssize_t + + $d +(, *, +size_t +, +off_t +) + +435 + `__ibu__ +(( + `__bounded__ +( +__bufr__ +,2,3))); + +436 +ssize_t + + $pwre +(, cڡ *, +size_t +, +off_t +) + +437 + `__ibu__ +(( + `__bounded__ +( +__bufr__ +,2,3))); + +438  + $yme_r +(, *, +size_t +) + +439 + `__ibu__ +(( + `__bounded__ +( +__rg__ +,2,3))); + +442 #i +__BSD_VISIBLE + || +__XPG_VISIBLE + <= 500 + +444  + `brk +(*); + +445  + `chro +(const *); + +446  + `gdbsize +(); + +447  + `ggesize +(); + +448 * + `gss +(const *); + +449 * + `sbrk +(); + +452 #i +__POSIX_VISIBLE + >200112 || +__XPG_VISIBLE + >= 420 + +453  + `lockf +(, , +off_t +); + +456 #i +__POSIX_VISIBLE + >200112 || +__XPG_VISIBLE + >420 || +__BSD_VISIBLE + + +457  + `symlk +(const *, const *); + +458  + $ghome +(*, +size_t +) + +459 + `__ibu__ + (( + `__bounded__ +( +__rg__ +,1,2))); + +460  + `gid +( +gid_t +); + +461  + `uid +( +uid_t +); + +464 #i +__POSIX_VISIBLE + >= 200809 + +465  + `cst +(, const *, , ); + +466  + `fchowt +(, cڡ *, +uid_t +, +gid_t +, ); + +467  + `lk +(, const *, , const *, ); + +468 +ssize_t + + $adlk +(, cڡ *, *, +size_t +) + +469 + `__ibu__ + (( + `__bounded__ +( +__rg__ +,3,4))); + +470  + `symlk +(const *, , const *); + +471  + `uƚk +(, const *, ); + +474 #i +__POSIX_VISIBLE + >202405 || +__BSD_VISIBLE + + +475  + `gy +(*, +size_t +); + +477 #i +__XPG_VISIBLE + >800 || +__BSD_VISIBLE + + +478  + `gsgid +( +gid_t + *, gid_t *, gid_t *); + +479  + `gsuid +( +uid_t + *, uid_t *, uid_t *); + +480  + `esgid +( +gid_t +, gid_t, gid_t); + +481  + `esuid +( +uid_t +, uid_t, uid_t); + +484 #i +__BSD_VISIBLE + + +485  + `dup3 +(, , ); + +486  + `pe2 +([2], ); + +489 #i +__BSD_VISIBLE + + +490  + `ac +(const *); + +491  + `oom +(); + +492  + `y_checkss +(const *, const *); + +493  + `y_whash +(cڡ *, cڡ *, *, +size_t +); + +494  + `durshl +(); + +495 * + `fagor +( +u_t32_t +); + +496  + $gdomame +(*, +size_t +) + +497 + `__ibu__ + (( + `__bounded__ +( +__rg__ +,1,2))); + +498  + `gdbcou +(); + +499  + `ggroui +(cڡ *, +gid_t +, gid_t *, *); + +500 +mode_t + + `gmode +(const *, mode_t); + +501 +pid_t + + `gthrid +(); + +502  + `gthame +( +pid_t +, *, +size_t +); + +503 * + `gurshl +(); + +504  + `groups +(cڡ *, +gid_t +); + +505  + `istugid +(); + +506 * + `mkdmp +(*); + +507  + `mkemps +(*, ); + +508  + `nfssvc +(, *); + +509  + $of +(*, +size_t +, , ) + +510 + `__ibu__ + (( + `__bounded__ +( +__rg__ +,1,2))); + +511  + `qual +(const *, , , *); + +512  + `rcmd +(**, , const *, + +514  + `rcmd_af +(**, , const *, + +516  + `rcmdsh +(**, , const *, + +518  + `bo +(); + +519  + `voke +(const *); + +520  + `esvpt +(*); + +521  + `esvpt_af +(*, ); + +522  + `rurok +(const *, , const *, const *); + +523  + `tdomame +(cڡ *, +size_t +); + +524  + `tgroups +(, cڡ +gid_t + *); + +525  + `thoid +(); + +526  + `thome +(cڡ *, +size_t +); + +527  + `og +(const *); + +528 * + `tmode +(const *); + +529  + `g +( +pid_t + +_pid +,id_ +_pg +); + +530  + `hame +( +pid_t +, const *); + +531  + `turshl +(); + +532  + `ofags +(**, +u_t32_t + *, u_int32_t *); + +533  + `swl +( +cmd +, cڡ * +g +,  +misc +); + +534  + `edge +(const *, const *); + +535  + `unve +(const *, const *); + +536 +pid_t + + `__tfk_thad +(cڡ  +__tfk + *, +size_t +, (*)(*), + +539 +__END_DECLS + + + @/usr/include/machine/_types.h + +35 #ide +_MACHINE__TYPES_H_ + + +36  + #_MACHINE__TYPES_H_ + + + ) + +48  + #_ALIGNBYTES + ((- 1) + + ) + +49  + #_STACKALIGNBYTES + 15 + + ) + +50  + #_ALIGN +( +p +((()+ +_ALIGNBYTES +&~_ALIGNBYTES) + + ) + +51  + #_ALIGNED_POINTER +( +p +, +t +1 + + ) + +52  + #_MAX_PAGE_SHIFT + 12 + + ) + +54 #i +defed +( +_KERNEL +) + +55  + sb_t + { + +56  + mv +[8]; + +57 } + tb_t +; + +61 sigd  + t__t8_t +; + +62  + t__ut8_t +; + +63  + t__t16_t +; + +64  + t__ut16_t +; + +65  + t__t32_t +; + +66  + t__ut32_t +; + +67  + t__t64_t +; + +68  + t__ut64_t +; + +71  +__t8_t + + t__t_a8_t +; + +72  +__ut8_t + + t__ut_a8_t +; + +73  +__t16_t + + t__t_a16_t +; + +74  +__ut16_t + + t__ut_a16_t +; + +75  +__t32_t + + t__t_a32_t +; + +76  +__ut32_t + + t__ut_a32_t +; + +77  +__t64_t + + t__t_a64_t +; + +78  +__ut64_t + + t__ut_a64_t +; + +81  +__t32_t + + t__t_8_t +; + +82  +__ut32_t + + t__ut_8_t +; + +83  +__t32_t + + t__t_16_t +; + +84  +__ut32_t + + t__ut_16_t +; + +85  +__t32_t + + t__t_32_t +; + +86  +__ut32_t + + t__ut_32_t +; + +87  +__t64_t + + t__t_64_t +; + +88  +__ut64_t + + t__ut_64_t +; + +89  + #__INT_FAST8_MIN + +INT32_MIN + + + ) + +90  + #__INT_FAST16_MIN + +INT32_MIN + + + ) + +91  + #__INT_FAST32_MIN + +INT32_MIN + + + ) + +92  + #__INT_FAST64_MIN + +INT64_MIN + + + ) + +93  + #__INT_FAST8_MAX + +INT32_MAX + + + ) + +94  + #__INT_FAST16_MAX + +INT32_MAX + + + ) + +95  + #__INT_FAST32_MAX + +INT32_MAX + + + ) + +96  + #__INT_FAST64_MAX + +INT64_MAX + + + ) + +97  + #__UINT_FAST8_MAX + +UINT32_MAX + + + ) + +98  + #__UINT_FAST16_MAX + +UINT32_MAX + + + ) + +99  + #__UINT_FAST32_MAX + +UINT32_MAX + + + ) + +100  + #__UINT_FAST64_MAX + +UINT64_MAX + + + ) + +103  + t___t +; + +104  + t__u_t +; + +107  +__t64_t + + t__tmax_t +; + +108  +__ut64_t + + t__utmax_t +; + +111  + t__gi_t +; + +114  + t__vaddr_t +; + +115  + t__ddr_t +; + +116  + t__vsize_t +; + +117  + t__psize_t +; + +120  + t__doub_t +; + +121  + t__t_t +; + +122  + t__rdiff_t +; + +123  + t__size_t +; + +124  + t__ssize_t +; + +125 #i +defed +( +__GNUC__ +) && __GNUC__ >= 3 + +126  +__but_va_li + + t__va_li +; + +128 * + t__va_li +; + +132 #ide +__lulus + + +133  + t__wch_t +; + +135  + t__wt_t +; + +136  + t__ru_t +; + +137 * + t__wns_t +; + +138 * + t__wy_t +; + + @/usr/include/sys/_null.h + +8 #ide +NULL + + +9 #i! +defed +( +__lulus +) + +10  + #NULL + ((*)0) + + ) + +11 #i +__lulus + >= 201103L + +12  + #NULL + +nuαr + + + ) + +13 #i +defed +( +__GNUG__ +) + +14  + #NULL + +__nu + + + ) + +16  + #NULL + 0L + + ) + + @/usr/include/sys/_time.h + +32 #ide +_SYS__TIME_H_ + + +33  + #_SYS__TIME_H_ + + + ) + +36  + #CLOCKS_PER_SEC + 100 + + ) + +38 #i +__BSD_VISIBLE + + +43  + #__CLOCK_ENCODE +( +ty +, +id +(y| ((id<< 12)) + + ) + +44  + #__CLOCK_TYPE +( +c +((c& 0xfff) + + ) + +45  + #__CLOCK_PTID +( +c +(((c>> 12& 0xfffff) + + ) + +48 #i +__POSIX_VISIBLE + >199309 || +__ISO_C_VISIBLE + >= 2011 + +49 #ide +_TIME_T_DEFINED_ + + +50  + #_TIME_T_DEFINED_ + + + ) + +51  +__time_t + + ttime_t +; + +54 #ide +_TIMESPEC_DECLARED + + +55  + #_TIMESPEC_DECLARED + + + ) + +56  + stimeec + { + +57 +time_t + + mtv_c +; + +58  + mtv_nc +; + +63 #i +__POSIX_VISIBLE + >= 199309 + +64  + #CLOCK_REALTIME + 0 + + ) + +65  + #CLOCK_PROCESS_CPUTIME_ID + 2 + + ) + +66  + #CLOCK_MONOTONIC + 3 + + ) + +67  + #CLOCK_THREAD_CPUTIME_ID + 4 + + ) + +68  + #CLOCK_UPTIME + 5 + + ) + +69  + #CLOCK_BOOTTIME + 6 + + ) + +75  + simec + { + +76  +timeec + + m_rv +; + +77  +timeec + + m_vue +; + +80  + #TIMER_RELTIME + 0x0 + + ) + +81  + #TIMER_ABSTIME + 0x1 + + ) + + @/usr/include/sys/_types.h + +34 #ide +_SYS__TYPES_H_ + + +35  + #_SYS__TYPES_H_ + + + ) + +37  + ~<mache/_tys.h +> + +39  +__t64_t + + t__blkt_t +; + +40  +__t32_t + + t__blksize_t +; + +41  +__t64_t + + t__ock_t +; + +42  +__t32_t + + t__ockid_t +; + +43  + t__uid_t +; + +44  +__t32_t + + t__dev_t +; + +45  +__ut32_t + + t__fix_t +; + +46  +__ut64_t + + t__fsblkt_t +; + +47  +__ut64_t + + t__fsft_t +; + +48  +__ut32_t + + t__gid_t +; + +49  +__ut32_t + + t__id_t +; + +50  +__ut32_t + + t___addr_t +; + +51  +__ut16_t + + t___pt_t +; + +52  +__ut64_t + + t__o_t +; + +53  + t__key_t +; + +54  +__ut32_t + + t__mode_t +; + +55  +__ut32_t + + t__ƚk_t +; + +56  +__t64_t + + t__off_t +; + +57  +__t32_t + + t__pid_t +; + +58  +__ut64_t + + t__im_t +; + +59  +__ut8_t + + t___my_t +; + +60  +__t32_t + + t__gsz_t +; + +61  +__ut32_t + + t__sockn_t +; + +62  + t__sucds_t +; + +63  +__t64_t + + t__time_t +; + +64  +__t32_t + + t__tim_t +; + +65  +__ut32_t + + t__uid_t +; + +66  +__ut32_t + + t__ucds_t +; + +73  + m__mbe8 +[128]; + +74 +__t64_t + + m__mbeL +; + +75 } + t__mbe_t +; + + @/usr/include/sys/cdefs.h + +38 #idef +_SYS_CDEFS_H_ + + +39  + #_SYS_CDEFS_H_ + + + ) + +41  + ~<mache/cdefs.h +> + +46 #ifde +__GNUC__ + + +47  + #__GNUC_PREREQ__ +( +ma +, +mi +) \ + +48 (( +__GNUC__ + > ( +ma +)|| (__GNUC__ =(ma&& +__GNUC_MINOR__ + >( +mi +))) + + ) + +50  + #__GNUC_PREREQ__ +( +ma +, +mi +0 + + ) + +61 #i +defed +( +__STDC__ +|| defed( +__lulus +) + +62  + #__P +( +os +o + + ) + +63  + #__CONCAT +( +x +, +y +x ## + ) +y + +64  + #__STRING +( +x +#x + + ) + +66  + #__cڡ + cڡ + + ) + +67  + #__sigd + sigd + + ) + +68  + #__vީe + vީe + + ) + +69 #i +defed +( +__lulus +|| defed( +__PCC__ +) + +70  + #__le + +le + + + ) + +72 #i! +defed +( +__GNUC__ +) + +73  + #__le + + + ) + +78  + #__P +( +os +( + + ) + +79  + #__CONCAT +( +x +, +y +x + ) +y + +80  + #__STRING +( +x +"x" + + ) + +82 #i! +defed +( +__GNUC__ +) + +83  + #__cڡ + + + ) + +84  + #__le + + + ) + +85  + #__sigd + + + ) + +86  + #__vީe + + + ) + +99 #i! +__GNUC_PREREQ__ +(2, 5&& ! +defed +( +__PCC__ +) + +100  + #__ibu__ +( +x + + + ) + +101 #i +defed +( +__GNUC__ +&& !defed( +__STRICT_ANSI__ +) + +102  + #__dd + +__vީe + + + ) + +103  + #__pu + +__cڡ + + + ) + +106  + #__dd + + `__ibu__ +(( +__nܑu__ +)) + + ) + +107  + #__pu + + `__ibu__ +(( +__cڡ__ +)) + + ) + +110 #i +__GNUC_PREREQ__ +(2, 7) + +111  + #__unud + + `__ibu__ +(( +__unud__ +)) + + ) + +113  + #__unud + + + ) + +116 #i +__GNUC_PREREQ__ +(3, 1) + +117  + #__ud + + `__ibu__ +(( +__ud__ +)) + + ) + +119  + #__ud + +__unud + + + ) + +122 #i +__GNUC_PREREQ__ +(3,4) + +123  + #__wn_unud_su + + `__ibu__ +(( +__wn_unud_su__ +)) + + ) + +125  + #__wn_unud_su + + + ) + +128 #i +__GNUC_PREREQ__ +(3,3&& ! +defed +( +__g__ +) + +129  + #__bounded +( +gs + + `__ibu__ + (( +__bounded__ +rg)) + + ) + +131  + #__bounded +( +gs + + + ) + +140 #i +__GNUC_PREREQ__ +(4, 1) + +141  + #__tus_twi + + `__ibu__ +(( +tus_twi +)) + + ) + +143  + #__tus_twi + + + ) + +153 #ifde +__GNUC__ + + +154 #i +__GNUC_PREREQ__ +(4, 2) + +155  + #__ly_le + +__le + + `__ibu__ +(( +__gnu_le__ +)) + + ) + +157  + #__ly_le + +__le + + + ) + +160  + #__ly_le +  +__le + + + ) + +191 #i +__GNUC_PREREQ__ +(2, 96) + +192  + #__edi_ue +( +exp + + `__but_ex +((xp!0), 1) + + ) + +193  + #__edi_l +( +exp + + `__but_ex +((xp!0), 0) + + ) + +195  + #__edi_ue +( +exp +(xp!0) + + ) + +196  + #__edi_l +( +exp +(xp!0) + + ) + +200 #ide +__dd + + +201  + #__dd + + + ) + +202  + #__pu + + + ) + +217 #i +__GNUC_PREREQ__ +(2, 7|| +defed +( +__PCC__ +) + +218  + #__cked + + `__ibu__ +(( +__cked__ +)) + + ) + +219  + #__igd +( +x + + `__ibu__ +(( + `__igd__ +(x))) + + ) + +222 #i! +__GNUC_PREREQ__ +(2, 8) + +223  + #__exnsi__ + + + ) + +226 #i +__GNUC_PREREQ__ +(3, 0) + +227  + #__mloc + + `__ibu__ +(( +__mloc__ +)) + + ) + +229  + #__mloc + + + ) + +232 #i +defed +( +__lulus +) + +233  + #__BEGIN_EXTERN_C + "C" { + + ) + +234  + #__END_EXTERN_C + } + + ) + +236  + #__BEGIN_EXTERN_C + + + ) + +237  + #__END_EXTERN_C + + + ) + +240 #i +__GNUC_PREREQ__ +(4, 0) + +241  + #__dso_public + + `__ibu__ +(( + `__visiby__ +("deu"))) + + ) + +242  + #__dso_hidd + + `__ibu__ +(( + `__visiby__ +("hidd"))) + + ) + +243  + #__BEGIN_PUBLIC_DECLS + \ + +244 + `_Pgma +("GCC visibyush(deu)" +__BEGIN_EXTERN_C + + + ) + +245  + #__END_PUBLIC_DECLS + +__END_EXTERN_C + + `_Pgma +("GCC visiby") + + ) + +246  + #__BEGIN_HIDDEN_DECLS + \ + +247 + `_Pgma +("GCC visibyush(hidd)" +__BEGIN_EXTERN_C + + + ) + +248  + #__END_HIDDEN_DECLS + +__END_EXTERN_C + + `_Pgma +("GCC visiby") + + ) + +250  + #__dso_public + + + ) + +251  + #__dso_hidd + + + ) + +252  + #__BEGIN_PUBLIC_DECLS + +__BEGIN_EXTERN_C + + + ) + +253  + #__END_PUBLIC_DECLS + +__END_EXTERN_C + + + ) + +254  + #__BEGIN_HIDDEN_DECLS + +__BEGIN_EXTERN_C + + + ) + +255  + #__END_HIDDEN_DECLS + +__END_EXTERN_C + + + ) + +258  + #__BEGIN_DECLS + +__BEGIN_EXTERN_C + + + ) + +259  + #__END_DECLS + +__END_EXTERN_C + + + ) + +294 #ifde +_XOPEN_SOURCE + + +295 #i( +_XOPEN_SOURCE + - 0 >= 800) + +296  + #__XPG_VISIBLE + 800 + + ) + +297 #unde +_POSIX_C_SOURCE + + +298  + #_POSIX_C_SOURCE + 202405L + + ) + +299 #i( +_XOPEN_SOURCE + - 0 >= 700) + +300  + #__XPG_VISIBLE + 700 + + ) + +301 #unde +_POSIX_C_SOURCE + + +302  + #_POSIX_C_SOURCE + 200809L + + ) + +303 #i( +_XOPEN_SOURCE + - 0 >= 600) + +304  + #__XPG_VISIBLE + 600 + + ) + +305 #unde +_POSIX_C_SOURCE + + +306  + #_POSIX_C_SOURCE + 200112L + + ) + +307 #i( +_XOPEN_SOURCE + - 0 >= 520) + +308  + #__XPG_VISIBLE + 520 + + ) + +309 #unde +_POSIX_C_SOURCE + + +310  + #_POSIX_C_SOURCE + 199506L + + ) + +311 #i( +_XOPEN_SOURCE + - 0 >= 500) + +312  + #__XPG_VISIBLE + 500 + + ) + +313 #unde +_POSIX_C_SOURCE + + +314  + #_POSIX_C_SOURCE + 199506L + + ) + +315 #i( +_XOPEN_SOURCE_EXTENDED + - 0 == 1) + +316  + #__XPG_VISIBLE + 420 + + ) + +317 #i( +_XOPEN_VERSION + - 0 >= 4) + +318  + #__XPG_VISIBLE + 400 + + ) + +320  + #__XPG_VISIBLE + 300 + + ) + +340 #ifde +_POSIX_C_SOURCE + + +341 #i( +_POSIX_C_SOURCE + - 0 >= 202405) + +342  + #__POSIX_VISIBLE + 202405 + + ) + +343  + #__ISO_C_VISIBLE + 2017 + + ) + +344 #i( +_POSIX_C_SOURCE + - 0 >= 200809) + +345  + #__POSIX_VISIBLE + 200809 + + ) + +346  + #__ISO_C_VISIBLE + 1999 + + ) + +347 #i( +_POSIX_C_SOURCE + - 0 >= 200112) + +348  + #__POSIX_VISIBLE + 200112 + + ) + +349  + #__ISO_C_VISIBLE + 1999 + + ) + +350 #i( +_POSIX_C_SOURCE + - 0 >= 199506) + +351  + #__POSIX_VISIBLE + 199506 + + ) + +352  + #__ISO_C_VISIBLE + 1990 + + ) + +353 #i( +_POSIX_C_SOURCE + - 0 >= 199309) + +354  + #__POSIX_VISIBLE + 199309 + + ) + +355  + #__ISO_C_VISIBLE + 1990 + + ) + +356 #i( +_POSIX_C_SOURCE + - 0 >= 2) + +357  + #__POSIX_VISIBLE + 199209 + + ) + +358  + #__ISO_C_VISIBLE + 1990 + + ) + +360  + #__POSIX_VISIBLE + 199009 + + ) + +361  + #__ISO_C_VISIBLE + 1990 + + ) + +363 #i +defed +( +_POSIX_SOURCE +) + +364  + #__POSIX_VISIBLE + 198808 + + ) + +365  + #__ISO_C_VISIBLE + 0 + + ) + +373 #i +defed +( +_ANSI_SOURCE +&& !defed( +__POSIX_VISIBLE +) && \ + +374 ! + $defed +( +__XPG_VISIBLE +) + +375  + #__POSIX_VISIBLE + 0 + + ) + +376  + #__XPG_VISIBLE + 0 + + ) + +377  + #__ISO_C_VISIBLE + 1990 + + ) + +384 #i + `defed +( +_ISOC11_SOURCE +) || \ + +385 ( + `defed +( +__STDC_VERSION__ +) && __STDC_VERSION__ >= 201112) || \ + +386 ( + `defed +( +__lulus +) && __cplusplus >= 201703) + +387 #unde +__ISO_C_VISIBLE + + +388  + #__ISO_C_VISIBLE + 2011 + + ) + +389 #i + `defed +( +_ISOC99_SOURCE +) || \ + +390 ( + `defed +( +__STDC_VERSION__ +) && __STDC_VERSION__ >= 199901) || \ + +391 ( + `defed +( +__lulus +) && __cplusplus >= 201103) + +392 #unde +__ISO_C_VISIBLE + + +393  + #__ISO_C_VISIBLE + 1999 + + ) + +401 #i! + `defed +( +_BSD_SOURCE +) && \ + +402 ( + `defed +( +_ANSI_SOURCE +|| defed( +__XPG_VISIBLE +|| + $defed +( +__POSIX_VISIBLE +)) + +403  + #__BSD_VISIBLE + 0 + + ) + +409 #ide +__XPG_VISIBLE + + +410  + #__XPG_VISIBLE + 800 + + ) + +412 #ide +__POSIX_VISIBLE + + +413  + #__POSIX_VISIBLE + 202405 + + ) + +415 #ide +__ISO_C_VISIBLE + + +416  + #__ISO_C_VISIBLE + 2017 + + ) + +418 #ide +__BSD_VISIBLE + + +419  + #__BSD_VISIBLE + 1 + + ) + + @/usr/include/sys/errno.h + +40  + ~<sys/cdefs.h +> + +42  + #EPERM + 1 + + ) + +43  + #ENOENT + 2 + + ) + +44  + #ESRCH + 3 + + ) + +45  + #EINTR + 4 + + ) + +46  + #EIO + 5 + + ) + +47  + #ENXIO + 6 + + ) + +48  + #E2BIG + 7 + + ) + +49  + #ENOEXEC + 8 + + ) + +50  + #EBADF + 9 + + ) + +51  + #ECHILD + 10 + + ) + +52  + #EDEADLK + 11 + + ) + +54  + #ENOMEM + 12 + + ) + +55  + #EACCES + 13 + + ) + +56  + #EFAULT + 14 + + ) + +57 #i +__BSD_VISIBLE + + +58  + #ENOTBLK + 15 + + ) + +60  + #EBUSY + 16 + + ) + +61  + #EEXIST + 17 + + ) + +62  + #EXDEV + 18 + + ) + +63  + #ENODEV + 19 + + ) + +64  + #ENOTDIR + 20 + + ) + +65  + #EISDIR + 21 + + ) + +66  + #EINVAL + 22 + + ) + +67  + #ENFILE + 23 + + ) + +68  + #EMFILE + 24 + + ) + +69  + #ENOTTY + 25 + + ) + +70  + #ETXTBSY + 26 + + ) + +71  + #EFBIG + 27 + + ) + +72  + #ENOSPC + 28 + + ) + +73  + #ESPIPE + 29 + + ) + +74  + #EROFS + 30 + + ) + +75  + #EMLINK + 31 + + ) + +76  + #EPIPE + 32 + + ) + +79  + #EDOM + 33 + + ) + +80  + #ERANGE + 34 + + ) + +83  + #EAGAIN + 35 + + ) + +84  + #EWOULDBLOCK + +EAGAIN + + + ) + +85  + #EINPROGRESS + 36 + + ) + +86  + #EALREADY + 37 + + ) + +89  + #ENOTSOCK + 38 + + ) + +90  + #EDESTADDRREQ + 39 + + ) + +91  + #EMSGSIZE + 40 + + ) + +92  + #EPROTOTYPE + 41 + + ) + +93  + #ENOPROTOOPT + 42 + + ) + +94  + #EPROTONOSUPPORT + 43 + + ) + +95 #i +__BSD_VISIBLE + + +96  + #ESOCKTNOSUPPORT + 44 + + ) + +98  + #EOPNOTSUPP + 45 + + ) + +99 #i +__BSD_VISIBLE + + +100  + #EPFNOSUPPORT + 46 + + ) + +102  + #EAFNOSUPPORT + 47 + + ) + +103  + #EADDRINUSE + 48 + + ) + +104  + #EADDRNOTAVAIL + 49 + + ) + +107  + #ENETDOWN + 50 + + ) + +108  + #ENETUNREACH + 51 + + ) + +109  + #ENETRESET + 52 + + ) + +110  + #ECONNABORTED + 53 + + ) + +111  + #ECONNRESET + 54 + + ) + +112  + #ENOBUFS + 55 + + ) + +113  + #EISCONN + 56 + + ) + +114  + #ENOTCONN + 57 + + ) + +115 #i +__BSD_VISIBLE + + +116  + #ESHUTDOWN + 58 + + ) + +117  + #ETOOMANYREFS + 59 + + ) + +119  + #ETIMEDOUT + 60 + + ) + +120  + #ECONNREFUSED + 61 + + ) + +122  + #ELOOP + 62 + + ) + +123  + #ENAMETOOLONG + 63 + + ) + +126 #i +__BSD_VISIBLE + + +127  + #EHOSTDOWN + 64 + + ) + +129  + #EHOSTUNREACH + 65 + + ) + +130  + #ENOTEMPTY + 66 + + ) + +133 #i +__BSD_VISIBLE + + +134  + #EPROCLIM + 67 + + ) + +135  + #EUSERS + 68 + + ) + +137  + #EDQUOT + 69 + + ) + +140  + #ESTALE + 70 + + ) + +141 #i +__BSD_VISIBLE + + +142  + #EREMOTE + 71 + + ) + +143  + #EBADRPC + 72 + + ) + +144  + #ERPCMISMATCH + 73 + + ) + +145  + #EPROGUNAVAIL + 74 + + ) + +146  + #EPROGMISMATCH + 75 + + ) + +147  + #EPROCUNAVAIL + 76 + + ) + +150  + #ENOLCK + 77 + + ) + +151  + #ENOSYS + 78 + + ) + +153 #i +__BSD_VISIBLE + + +154  + #EFTYPE + 79 + + ) + +155  + #EAUTH + 80 + + ) + +156  + #ENEEDAUTH + 81 + + ) + +157  + #EIPSEC + 82 + + ) + +158  + #ENOATTR + 83 + + ) + +160  + #EILSEQ + 84 + + ) + +161 #i +__BSD_VISIBLE + + +162  + #ENOMEDIUM + 85 + + ) + +163  + #EMEDIUMTYPE + 86 + + ) + +165  + #EOVERFLOW + 87 + + ) + +166  + #ECANCELED + 88 + + ) + +167  + #EIDRM + 89 + + ) + +168  + #ENOMSG + 90 + + ) + +169  + #ENOTSUP + 91 + + ) + +170  + #EBADMSG + 92 + + ) + +171  + #ENOTRECOVERABLE + 93 + + ) + +172  + #EOWNERDEAD + 94 + + ) + +173  + #EPROTO + 95 + + ) + +174 #i +__BSD_VISIBLE + + +175  + #ELAST + 95 + + ) + +178 #ifde +_KERNEL + + +180  + #ERESTART + -1 + + ) + +181  + #EJUSTRETURN + -2 + + ) + + @/usr/include/sys/limits.h + +26 #ide +_SYS_LIMITS_H_ + + +27  + #_SYS_LIMITS_H_ + + + ) + +29  + ~<sys/cdefs.h +> + +34  + ~<mache/lims.h +> + +36  + #CHAR_BIT + 8 + + ) + +38  + #SCHAR_MAX + 0x7 + + ) + +39  + #SCHAR_MIN + (-0x7f-1 + + ) + +41  + #UCHAR_MAX + 0xf + + ) + +42 #ifde +__CHAR_UNSIGNED__ + + +43  + #CHAR_MIN + 0 + + ) + +44  + #CHAR_MAX + 0xf + + ) + +46  + #CHAR_MAX + 0x7f + + ) + +47  + #CHAR_MIN + (-0x7f-1) + + ) + +50  + #MB_LEN_MAX + 4 + + ) + +52  + #USHRT_MAX + 0xfff + + ) + +53  + #SHRT_MAX + 0x7ff + + ) + +54  + #SHRT_MIN + (-0x7fff-1 + + ) + +56  + #UINT_MAX + 0xffffffffU + + ) + +57  + #INT_MAX + 0x7ffffff + + ) + +58  + #INT_MIN + (-0x7fffffff-1 + + ) + +60 #ifde +__LP64__ + + +61  + #ULONG_MAX + 0xffffffffffffffffUL + + ) + +63  + #LONG_MAX + 0x7fffffffffffffffL + + ) + +65  + #LONG_MIN + (-0x7fffffffffffffffL-1) + + ) + +68  + #ULONG_MAX + 0xffffffffUL + + ) + +69  + #LONG_MAX + 0x7fffffffL + + ) + +70  + #LONG_MIN + (-0x7fffffffL-1) + + ) + +73 #i +__BSD_VISIBLE + || +__ISO_C_VISIBLE + >= 1999 + +74  + #ULLONG_MAX + 0xffffffffffffffffULL + + ) + +76  + #LLONG_MAX + 0x7fffffffffffffffLL + + ) + +78  + #LLONG_MIN + (-0x7fffffffffffffffLL-1) + + ) + +82 #i +__BSD_VISIBLE + + +83  + #UID_MAX + +UINT_MAX + + + ) + +84  + #GID_MAX + +UINT_MAX + + + ) + +87 #i +__XPG_VISIBLE + || +__POSIX_VISIBLE + >= 200809 + +88 #ifde +__LP64__ + + +89  + #LONG_BIT + 64 + + ) + +91  + #LONG_BIT + 32 + + ) + +93  + #WORD_BIT + 32 + + ) + +96 #i +__XPG_VISIBLE + < 600 + +97  + ~<mache/_t.h +> + +100 #ide +FLT_DIG + + +101  + #FLT_DIG + +__FLT_DIG + + + ) + +103 #ide +FLT_MAX + + +104  + #FLT_MAX + +__FLT_MAX + + + ) + +106 #ide +DBL_DIG + + +107  + #DBL_DIG + +__DBL_DIG + + + ) + +109 #ide +DBL_MAX + + +110  + #DBL_MAX + +__DBL_MAX + + + ) + +114 #i +__XPG_VISIBLE + < 500 + +115 #ide +FLT_MIN + + +116  + #FLT_MIN + +__FLT_MIN + + + ) + +118 #ide +DBL_MIN + + +119  + #DBL_MIN + +__DBL_MIN + + + ) + + @/usr/include/sys/types.h + +40 #ide +_SYS_TYPES_H_ + + +41  + #_SYS_TYPES_H_ + + + ) + +43  + ~<sys/cdefs.h +> + +44 #i +__BSD_VISIBLE + + +45  + ~<sys/dn.h +> + +47  + ~<sys/_dn.h +> + +50 #i +__BSD_VISIBLE + + +51  + tu_ch +; + +52  + tu_sht +; + +53  + tu_t +; + +54  + tu_lg +; + +56  + tunch +; + +57  + tusht +; + +58  + tut +; + +59  + tulg +; + +61  +__uid_t + + tuid_t +; + +62  +__gi_t + + tgi_t +; + +69 #idef +__BIT_TYPES_DEFINED__ + + +70  + #__BIT_TYPES_DEFINED__ + + + ) + +73 #idef +_INT8_T_DEFINED_ + + +74  + #_INT8_T_DEFINED_ + + + ) + +75  +__t8_t + + tt8_t +; + +78 #idef +_UINT8_T_DEFINED_ + + +79  + #_UINT8_T_DEFINED_ + + + ) + +80  +__ut8_t + + tut8_t +; + +83 #idef +_INT16_T_DEFINED_ + + +84  + #_INT16_T_DEFINED_ + + + ) + +85  +__t16_t + + tt16_t +; + +88 #idef +_UINT16_T_DEFINED_ + + +89  + #_UINT16_T_DEFINED_ + + + ) + +90  +__ut16_t + + tut16_t +; + +93 #idef +_INT32_T_DEFINED_ + + +94  + #_INT32_T_DEFINED_ + + + ) + +95  +__t32_t + + tt32_t +; + +98 #idef +_UINT32_T_DEFINED_ + + +99  + #_UINT32_T_DEFINED_ + + + ) + +100  +__ut32_t + + tut32_t +; + +103 #idef +_INT64_T_DEFINED_ + + +104  + #_INT64_T_DEFINED_ + + + ) + +105  +__t64_t + + tt64_t +; + +108 #idef +_UINT64_T_DEFINED_ + + +109  + #_UINT64_T_DEFINED_ + + + ) + +110  +__ut64_t + + tut64_t +; + +114  +__ut8_t + + tu_t8_t +; + +115  +__ut16_t + + tu_t16_t +; + +116  +__ut32_t + + tu_t32_t +; + +117  +__ut64_t + + tu_t64_t +; + +120  +__t64_t + + tquad_t +; + +121  +__ut64_t + + tu_quad_t +; + +123 #i +__BSD_VISIBLE + + +125  +__vaddr_t + + tvaddr_t +; + +126  +__ddr_t + + tddr_t +; + +127  +__vsize_t + + tvsize_t +; + +128  +__psize_t + + tpsize_t +; + +132  +__blkt_t + + tblkt_t +; + +133  +__blksize_t + + tblksize_t +; + +134 * + tddr_t +; + +135  +__t32_t + + tdaddr32_t +; + +136  +__t64_t + + tdaddr_t +; + +137  +__dev_t + + tdev_t +; + +138  +__fix_t + + tfix_t +; + +139  +__gid_t + + tgid_t +; + +140  +__id_t + + tid_t +; + +141  +__o_t + + to_t +; + +142  +__key_t + + tkey_t +; + +143  +__mode_t + + tmode_t +; + +144  +__ƚk_t + + tƚk_t +; + +145  +__im_t + + tim_t +; + +146  +__gsz_t + + tgsz_t +; + +147  +__uid_t + + tuid_t +; + +148  +__ucds_t + + tucds_t +; + +149  +__sucds_t + + tsucds_t +; + +150  +__fsblkt_t + + tfsblkt_t +; + +151  +__fsft_t + + tfsft_t +; + +156 #idef +_CLOCK_T_DEFINED_ + + +157  + #_CLOCK_T_DEFINED_ + + + ) + +158  +__ock_t + + tock_t +; + +161 #idef +_CLOCKID_T_DEFINED_ + + +162  + #_CLOCKID_T_DEFINED_ + + + ) + +163  +__ockid_t + + tockid_t +; + +166 #idef +_PID_T_DEFINED_ + + +167  + #_PID_T_DEFINED_ + + + ) + +168  +__pid_t + + tpid_t +; + +171 #idef +_SIZE_T_DEFINED_ + + +172  + #_SIZE_T_DEFINED_ + + + ) + +173  +__size_t + + tsize_t +; + +176 #idef +_SSIZE_T_DEFINED_ + + +177  + #_SSIZE_T_DEFINED_ + + + ) + +178  +__ssize_t + + tssize_t +; + +181 #idef +_TIME_T_DEFINED_ + + +182  + #_TIME_T_DEFINED_ + + + ) + +183  +__time_t + + ttime_t +; + +186 #idef +_TIMER_T_DEFINED_ + + +187  + #_TIMER_T_DEFINED_ + + + ) + +188  +__tim_t + + ttim_t +; + +191 #idef +_OFF_T_DEFINED_ + + +192  + #_OFF_T_DEFINED_ + + + ) + +193  +__off_t + + toff_t +; + +201 #i +__BSD_VISIBLE + && ! +defed +( +_KERNEL +) + +202 +__BEGIN_DECLS + + +203 +off_t + +lek +(, off_t, ); + +204  +run +(, +off_t +); + +205  +un +(cڡ *, +off_t +); + +206 + g__END_DECLS + + +209 #i +__BSD_VISIBLE + + +211  + #maj +( +x +((()(x>> 8& 0xff) + + ) + +212  + #m +( +x +(()((x& 0xff| (((x& 0xffff0000>> 8)) + + ) + +213  + #makedev +( +x +, +y +(( +dev_t +)((((x& 0xff<< 8| ((y& 0xff| (((y& 0xffff00<< 8))) + + ) + +216 #i +defed +( +__STDC__ +&& defed( +_KERNEL +) + +222  + goc +; + +223  + gpg +; + +224  + gued +; + +225  + gruge +; + +226  + gfe +; + +227  + gbuf +; + +228  + gy +; + +229  + guio +; + +232 #ifde +_KERNEL + + +233 #i +defed +( +__GNUC__ +) || \ + +234 ( +defed +( +__STDC_VERSION__ +&& + g__STDC_VERSION__ + >= 199901) + +236  + #l + 0 + + ) + +237  + #ue + 1 + + ) + +242 +l + = 0, + +243 + mue + = 1 + +244 } + t_Bo +; + +247  + #l + +l + + + ) + +248  + #ue + +ue + + + ) + +253  + #bo + +_Bo + + + ) + +256  + #__bo_ue_l_e_defed + 1 + + ) + + @/usr/include/sys/unistd.h + +35 #ide +_SYS_UNISTD_H_ + + +36  + #_SYS_UNISTD_H_ + + + ) + +38  + ~<sys/cdefs.h +> + +40  + #_POSIX_VDISABLE + (0377) + + ) + +41  + #_POSIX_ASYNC_IO + (-1) + + ) + +42  + #_POSIX_PRIO_IO + (-1) + + ) + +43  + #_POSIX_SYNC_IO + (-1) + + ) + +46  + #_POSIX_VERSION + 200809L + + ) + +49  + #F_OK + 0 + + ) + +50  + #X_OK + 0x01 + + ) + +51  + #W_OK + 0x02 + + ) + +52  + #R_OK + 0x04 + + ) + +55  + #SEEK_SET + 0 + + ) + +56  + #SEEK_CUR + 1 + + ) + +57  + #SEEK_END + 2 + + ) + +59 #i +__BSD_VISIBLE + + +61  + #L_SET + +SEEK_SET + + + ) + +62  + #L_INCR + +SEEK_CUR + + + ) + +63  + #L_XTND + +SEEK_END + + + ) + +66  + s__tfk + { + +67 * + mtf_tcb +; + +68 +pid_t + * + mtf_tid +; + +69 * + mtf_ack +; + +73  + s__kbd + { + +74 * + mkb_addr +; + +75 +size_t + + mkb_size +; + +77  + #KBIND_BLOCK_MAX + 2 + + ) + +78  + #KBIND_DATA_MAX + 24 + + ) + +84  + #_PC_LINK_MAX + 1 + + ) + +85  + #_PC_MAX_CANON + 2 + + ) + +86  + #_PC_MAX_INPUT + 3 + + ) + +87  + #_PC_NAME_MAX + 4 + + ) + +88  + #_PC_PATH_MAX + 5 + + ) + +89  + #_PC_PIPE_BUF + 6 + + ) + +90  + #_PC_CHOWN_RESTRICTED + 7 + + ) + +91  + #_PC_NO_TRUNC + 8 + + ) + +92  + #_PC_VDISABLE + 9 + + ) + +93  + #_PC_2_SYMLINKS + 10 + + ) + +94  + #_PC_ALLOC_SIZE_MIN + 11 + + ) + +95  + #_PC_ASYNC_IO + 12 + + ) + +96  + #_PC_FILESIZEBITS + 13 + + ) + +97  + #_PC_PRIO_IO + 14 + + ) + +98  + #_PC_REC_INCR_XFER_SIZE + 15 + + ) + +99  + #_PC_REC_MAX_XFER_SIZE + 16 + + ) + +100  + #_PC_REC_MIN_XFER_SIZE + 17 + + ) + +101  + #_PC_REC_XFER_ALIGN + 18 + + ) + +102  + #_PC_SYMLINK_MAX + 19 + + ) + +103  + #_PC_SYNC_IO + 20 + + ) + +104  + #_PC_TIMESTAMP_RESOLUTION + 21 + + ) + + @/usr/include/machine/_float.h + +32 #ide +_MACHINE__FLOAT_H_ + + +33  + #_MACHINE__FLOAT_H_ + + + ) + +35  + #__FLT_RADIX + 2 + + ) + +36  + #__FLT_ROUNDS + + `__t_rounds +() + + ) + +37  + #__FLT_EVAL_METHOD + 0 + + ) + +39  + #__FLT_MANT_DIG + 24 + + ) + +40  + #__FLT_EPSILON + 1.19209290E-07F + + ) + +41  + #__FLT_DIG + 6 + + ) + +42  + #__FLT_MIN_EXP + (-125 + + ) + +43  + #__FLT_MIN + 1.17549435E-38F + + ) + +44  + #__FLT_MIN_10_EXP + (-37 + + ) + +45  + #__FLT_MAX_EXP + 128 + + ) + +46  + #__FLT_MAX + 3.40282347E+38F + + ) + +47  + #__FLT_MAX_10_EXP + 38 + + ) + +49  + #__DBL_MANT_DIG + 53 + + ) + +50  + #__DBL_EPSILON + 2.2204460492503131E-16 + + ) + +51  + #__DBL_DIG + 15 + + ) + +52  + #__DBL_MIN_EXP + (-1021) + + ) + +53  + #__DBL_MIN + 2.2250738585072014E-308 + + ) + +54  + #__DBL_MIN_10_EXP + (-307) + + ) + +55  + #__DBL_MAX_EXP + 1024 + + ) + +56  + #__DBL_MAX + 1.7976931348623157E+308 + + ) + +57  + #__DBL_MAX_10_EXP + 308 + + ) + +59  + #__LDBL_MANT_DIG + 64 + + ) + +60  + #__LDBL_EPSILON + 1.08420217248550443401e-19L + + ) + +61  + #__LDBL_DIG + 18 + + ) + +62  + #__LDBL_MIN_EXP + (-16381) + + ) + +63  + #__LDBL_MIN + 3.36210314311209350626e-4932L + + ) + +64  + #__LDBL_MIN_10_EXP + (-4931) + + ) + +65  + #__LDBL_MAX_EXP + 16384 + + ) + +66  + #__LDBL_MAX + 1.18973149535723176502e+4932L + + ) + +67  + #__LDBL_MAX_10_EXP + 4932 + + ) + +69  + #__DECIMAL_DIG + 21 + + ) + + @/usr/include/machine/cdefs.h + +8 #idef +_MACHINE_CDEFS_H_ + + +9  + #_MACHINE_CDEFS_H_ + + + ) + +11  + #__rg_s +( +s +, +sym +) \ + +12 + `__asm__ +(".glob " + `__STRING +( +s +) " ; " __STRING(alias) \ + +13 " = " + `__STRING +( +sym +)) + + ) + +14  + #__wk_s +( +s +, +sym +) \ + +15 + `__asm__ +(".wk " + `__STRING +( +s +) " ; " __STRING(alias) \ + +16 " = " + `__STRING +( +sym +)) + + ) + +17  + #__wn_ns +( +sym +, +msg +) \ + +18 + `__asm__ +(".i .gnu.wng." + `__STRING +( +sym +) \ + +19 " ; .asci\"" +msg + "\" ; .xt") + + ) + + @/usr/include/machine/limits.h + +34 #idef +_MACHINE_LIMITS_H_ + + +35  + #_MACHINE_LIMITS_H_ + + + ) + +37  + ~<sys/cdefs.h +> + +39 #i +__POSIX_VISIBLE + || +__XPG_VISIBLE + + +40  + #SSIZE_MAX + +LONG_MAX + + + ) + +43 #i +__BSD_VISIBLE + + +44  + #SIZE_T_MAX + +ULONG_MAX + + + ) + +46  + #UQUAD_MAX + 0xffffffffffffffffULL + + ) + +47  + #QUAD_MAX + 0x7fffffffffffffffLL + + ) + +48  + #QUAD_MIN + (-0x7fffffffffffffffLL-1 + + ) + + @/usr/include/sys/_endian.h + +33 #ide +_SYS__ENDIAN_H_ + + +34  + #_SYS__ENDIAN_H_ + + + ) + +36  + ~<sys/_tys.h +> + +38  + #__FROM_SYS__ENDIAN + + + ) + +39  + ~<mache/dn.h +> + +40 #unde +__FROM_SYS__ENDIAN + + +42  + #_LITTLE_ENDIAN + 1234 + + ) + +43  + #_BIG_ENDIAN + 4321 + + ) + +44  + #_PDP_ENDIAN + 3412 + + ) + +48  + #__sw16g +( +x +) \ + +49 ( +__ut16_t +)(((__ut16_t)( +x +& 0xffU<< 8 | ((__ut16_t)(x& 0xff00U>> 8) + + ) + +51  + #__sw32g +( +x +) \ + +52 ( +__ut32_t +)(((__ut32_t)( +x +) & 0xff) << 24 | \ + +53 (( +__ut32_t +)( +x +) & 0xff00) << 8 | ((__uint32_t)(x) & 0xff0000) >> 8 |\ + +54 (( +__ut32_t +)( +x +& 0xff000000>> 24) + + ) + +56  + #__sw64g +( +x +) \ + +57 ( +__ut64_t +)((((__ut64_t)( +x +) & 0xff) << 56) | \ + +58 (( +__ut64_t +)( +x +) & 0xff00ULL) << 40 | \ + +59 (( +__ut64_t +)( +x +) & 0xff0000ULL) << 24 | \ + +60 (( +__ut64_t +)( +x +) & 0xff000000ULL) << 8 | \ + +61 (( +__ut64_t +)( +x +) & 0xff00000000ULL) >> 8 | \ + +62 (( +__ut64_t +)( +x +) & 0xff0000000000ULL) >> 24 | \ + +63 (( +__ut64_t +)( +x +) & 0xff000000000000ULL) >> 40 | \ + +64 (( +__ut64_t +)( +x +& 0xff00000000000000ULL>> 56) + + ) + +66 #ide +__HAVE_MD_SWAP + + +67  +__le + +__ut16_t + + +68 + $__sw16md +( +__ut16_t + +x +) + +70  ( + `__sw16g +( +x +)); + +71 + } +} + +73  +__le + +__ut32_t + + +74 + $__sw32md +( +__ut32_t + +x +) + +76  ( + `__sw32g +( +x +)); + +77 + } +} + +79  +__le + +__ut64_t + + +80 + $__sw64md +( +__ut64_t + +x +) + +82  ( + `__sw64g +( +x +)); + +83 + } +} + +86  + #__sw16 +( +x +) \ + +87 ( +__ut16_t +)( + `__but_cڡt_p +( +x +? + `__sw16g +(x: + `__sw16md +(x)) + + ) + +88  + #__sw32 +( +x +) \ + +89 ( +__ut32_t +)( + `__but_cڡt_p +( +x +? + `__sw32g +(x: + `__sw32md +(x)) + + ) + +90  + #__sw64 +( +x +) \ + +91 ( +__ut64_t +)( + `__but_cڡt_p +( +x +? + `__sw64g +(x: + `__sw64md +(x)) + + ) + +93 #i +_BYTE_ORDER + = +_LITTLE_ENDIAN + + +95  + #_QUAD_HIGHWORD + 1 + + ) + +96  + #_QUAD_LOWWORD + 0 + + ) + +98  + #__htobe16 + +__sw16 + + + ) + +99  + #__htobe32 + +__sw32 + + + ) + +100  + #__htobe64 + +__sw64 + + + ) + +101  + #__hte16 +( +x +(( +__ut16_t +)(x)) + + ) + +102  + #__hte32 +( +x +(( +__ut32_t +)(x)) + + ) + +103  + #__hte64 +( +x +(( +__ut64_t +)(x)) + + ) + +105 #ifde +_KERNEL + + +106 #ifde +__HAVE_MD_SWAPIO + + +108  + #__bemtoh16 +( +_x + + `__msw16 +(_x) + + ) + +109  + #__bemtoh32 +( +_x + + `__msw32 +(_x) + + ) + +110  + #__bemtoh64 +( +_x + + `__msw64 +(_x) + + ) + +112  + #__htobem16 +( +_x +, +_v + + `__swm16 +((_x), (_v)) + + ) + +113  + #__htobem32 +( +_x +, +_v + + `__swm32 +((_x), (_v)) + + ) + +114  + #__htobem64 +( +_x +, +_v + + `__swm64 +((_x), (_v)) + + ) + +120 #i +_BYTE_ORDER + = +_BIG_ENDIAN + + +122  + #_QUAD_HIGHWORD + 0 + + ) + +123  + #_QUAD_LOWWORD + 1 + + ) + +125  + #__htobe16 +( +x +(( +__ut16_t +)(x)) + + ) + +126  + #__htobe32 +( +x +(( +__ut32_t +)(x)) + + ) + +127  + #__htobe64 +( +x +(( +__ut64_t +)(x)) + + ) + +128  + #__hte16 + +__sw16 + + + ) + +129  + #__hte32 + +__sw32 + + + ) + +130  + #__hte64 + +__sw64 + + + ) + +132 #ifde +_KERNEL + + +133 #ifde +__HAVE_MD_SWAPIO + + +135  + #__mtoh16 +( +_x + + `__msw16 +(_x) + + ) + +136  + #__mtoh32 +( +_x + + `__msw32 +(_x) + + ) + +137  + #__mtoh64 +( +_x + + `__msw64 +(_x) + + ) + +139  + #__htem16 +( +_x +, +_v + + `__swm16 +((_x), (_v)) + + ) + +140  + #__htem32 +( +_x +, +_v + + `__swm32 +((_x), (_v)) + + ) + +141  + #__htem64 +( +_x +, +_v + + `__swm64 +((_x), (_v)) + + ) + +148 #ifde +_KERNEL + + +154 #ide +__bemtoh16 + + +155  + #__bemtoh16 +( +_x + + `__htobe16 +(*( +__ut16_t + *)(_x)) + + ) + +156  + #__bemtoh32 +( +_x + + `__htobe32 +(*( +__ut32_t + *)(_x)) + + ) + +157  + #__bemtoh64 +( +_x + + `__htobe64 +(*( +__ut64_t + *)(_x)) + + ) + +160 #ide +__htobem16 + + +161  + #__htobem16 +( +_x +, +_v +(*( +__ut16_t + *)(_x + `__htobe16 +(_v)) + + ) + +162  + #__htobem32 +( +_x +, +_v +(*( +__ut32_t + *)(_x + `__htobe32 +(_v)) + + ) + +163  + #__htobem64 +( +_x +, +_v +(*( +__ut64_t + *)(_x + `__htobe64 +(_v)) + + ) + +166 #ide +__mtoh16 + + +167  + #__mtoh16 +( +_x + + `__hte16 +(*( +__ut16_t + *)(_x)) + + ) + +168  + #__mtoh32 +( +_x + + `__hte32 +(*( +__ut32_t + *)(_x)) + + ) + +169  + #__mtoh64 +( +_x + + `__hte64 +(*( +__ut64_t + *)(_x)) + + ) + +172 #ide +__htem16 + + +173  + #__htem16 +( +_x +, +_v +(*( +__ut16_t + *)(_x + `__hte16 +(_v)) + + ) + +174  + #__htem32 +( +_x +, +_v +(*( +__ut32_t + *)(_x + `__hte32 +(_v)) + + ) + +175  + #__htem64 +( +_x +, +_v +(*( +__ut64_t + *)(_x + `__hte64 +(_v)) + + ) + + @/usr/include/sys/endian.h + +37 #ide +_SYS_ENDIAN_H_ + + +38  + #_SYS_ENDIAN_H_ + + + ) + +40  + ~<sys/cdefs.h +> + +41  + ~<sys/_dn.h +> + +44  + #LITTLE_ENDIAN + +_LITTLE_ENDIAN + + + ) + +45  + #BIG_ENDIAN + +_BIG_ENDIAN + + + ) + +46  + #PDP_ENDIAN + +_PDP_ENDIAN + + + ) + +47  + #BYTE_ORDER + +_BYTE_ORDER + + + ) + +53  + #htobe16 +( +x + + `__htobe16 +(x) + + ) + +54  + #htobe32 +( +x + + `__htobe32 +(x) + + ) + +55  + #htobe64 +( +x + + `__htobe64 +(x) + + ) + +56  + #hte16 +( +x + + `__hte16 +(x) + + ) + +57  + #hte32 +( +x + + `__hte32 +(x) + + ) + +58  + #hte64 +( +x + + `__hte64 +(x) + + ) + +61  + #be16toh +( +x + + `__htobe16 +(x) + + ) + +62  + #be32toh +( +x + + `__htobe32 +(x) + + ) + +63  + #be64toh +( +x + + `__htobe64 +(x) + + ) + +64  + #16toh +( +x + + `__hte16 +(x) + + ) + +65  + #32toh +( +x + + `__hte32 +(x) + + ) + +66  + #64toh +( +x + + `__hte64 +(x) + + ) + +69 #i +__BSD_VISIBLE + + +70  + #sw16 +( +x + + `__sw16 +(x) + + ) + +71  + #sw32 +( +x + + `__sw32 +(x) + + ) + +72  + #sw64 +( +x + + `__sw64 +(x) + + ) + +74  + #sw16_mui +( +v +, +n +) do { \ + +75 +__size_t + +__sw16_mui_n + = ( +n +); \ + +76 +__ut16_t + * +__sw16_mui_v + = ( +v +); \ + +78  +__sw16_mui_n +) { \ + +79 * +__sw16_mui_v + = + `sw16 +(*__swap16_multi_v); \ + +80 +__sw16_mui_v +++; \ + +81 +__sw16_mui_n +--; \ + +83 } 0) + + ) + +86  + #boh16 +( +x + + `__htobe16 +(x) + + ) + +87  + #boh32 +( +x + + `__htobe32 +(x) + + ) + +88  + #boh64 +( +x + + `__htobe64 +(x) + + ) + +89  + #toh16 +( +x + + `__hte16 +(x) + + ) + +90  + #toh32 +( +x + + `__hte32 +(x) + + ) + +91  + #toh64 +( +x + + `__hte64 +(x) + + ) + +93 #ide +hts + + +95  + #hts +( +x + + `__htobe16 +(x) + + ) + +96  + #htl +( +x + + `__htobe32 +(x) + + ) + +97  + #ohs +( +x + + `__htobe16 +(x) + + ) + +98  + #ohl +( +x + + `__htobe32 +(x) + + ) + +102  + #NTOHL +( +x +(x + `ohl +(( +u_t32_t +)(x)) + + ) + +103  + #NTOHS +( +x +(x + `ohs +(( +u_t16_t +)(x)) + + ) + +104  + #HTONL +( +x +(x + `htl +(( +u_t32_t +)(x)) + + ) + +105  + #HTONS +( +x +(x + `hts +(( +u_t16_t +)(x)) + + ) + +108 #ifde +_KERNEL + + +110  + #bemtoh16 + +__bemtoh16 + + + ) + +111  + #bemtoh32 + +__bemtoh32 + + + ) + +112  + #bemtoh64 + +__bemtoh64 + + + ) + +113  + #htobem16 + +__htobem16 + + + ) + +114  + #htobem32 + +__htobem32 + + + ) + +115  + #htobem64 + +__htobem64 + + + ) + +116  + #mtoh16 + +__mtoh16 + + + ) + +117  + #mtoh32 + +__mtoh32 + + + ) + +118  + #mtoh64 + +__mtoh64 + + + ) + +119  + #htem16 + +__htem16 + + + ) + +120  + #htem32 + +__htem32 + + + ) + +121  + #htem64 + +__htem64 + + + ) + + @/usr/include/machine/endian.h + +27 #ide +_MACHINE_ENDIAN_H_ + + +28  + #_MACHINE_ENDIAN_H_ + + + ) + +30  + #_BYTE_ORDER + +_LITTLE_ENDIAN + + + ) + +32 #ide +__FROM_SYS__ENDIAN + + +33  + ~<sys/dn.h +> + + @ +1 +. +1 +/usr/include +25 +594 +linije.c +version.h +/usr/include/assert.h +/usr/include/errno.h +/usr/include/math.h +/usr/include/stdarg.h +/usr/include/stdio.h +/usr/include/stdlib.h +/usr/include/time.h +/usr/include/unistd.h +/usr/include/machine/_types.h +/usr/include/sys/_null.h +/usr/include/sys/_time.h +/usr/include/sys/_types.h +/usr/include/sys/cdefs.h +/usr/include/sys/errno.h +/usr/include/sys/limits.h +/usr/include/sys/types.h +/usr/include/sys/unistd.h +/usr/include/machine/_float.h +/usr/include/machine/cdefs.h +/usr/include/machine/limits.h +/usr/include/sys/_endian.h +/usr/include/sys/endian.h +/usr/include/machine/endian.h diff --git a/date b/date @@ -0,0 +1 @@ +July 30, 2025 diff --git a/description b/description @@ -0,0 +1 @@ +Клон игре Color lines diff --git a/lib/makedate b/lib/makedate @@ -0,0 +1,61 @@ +#!/bin/sh -x +# vim: set ft=bash: +FALLBACKDATE=${FALLBACKDATE:-unknown} +LC_ALL=C +export LC_ALL + +if [ -d .got ] && command -v got >/dev/null 2>&1; then + got log | + awk ' + /^date: / { + sub(/^date: /,"",$0) + # Convert to proper form for `mandoc -Tlint` + month_names["Jan"] = "January" + month_names["Feb"] = "February" + month_names["Mar"] = "March" + month_names["Apr"] = "April" + month_names["May"] = "May" + month_names["Jun"] = "June" + month_names["Jul"] = "July" + month_names["Aug"] = "August" + month_names["Sep"] = "September" + month_names["Oct"] = "October" + month_names["Nov"] = "November" + month_names["Dec"] = "December" + print month_names[$2] " " $3 ", " $5 + exit + }' >date.new +elif [ -d .git ] && command -v git >/dev/null 2>&1; then + user=$(getent passwd "$(unalias ls >/dev/null 2>&1 || true; \ + command ls -lnd . | awk '{print $3}')" | awk -F: '{print $1}') + if [ -z "$user" ]; then + printf "$0: error: Cannot determine owner of %s" "$(pwd)" >&2 + exit 1 + fi + e_user=$(id -un) + if [ "$e_user" = "$user" ]; then + git log --format=format:%cd \ + --date=format:"%B %d, %Y" -1 @ >date.new + else + su "${user}" -c 'env LC_ALL=C git log --format=format:%cd \ + --date=format:"%B %d, %Y" -1 @' >date.new + fi + echo >>date.new +else + printf "%s\n" "$FALLBACKDATE" >date.new +fi + +if [ -f date ]; then + if diff date date.new >/dev/null; then + rm date.new + else + mv date.new date + touch .rebuild + fi +else + mv date.new date + touch .rebuild +fi +if [ "$1" = "-l" ]; then + printf "DATE=\"%s\"\n" "$(cat date)" +fi diff --git a/lib/makeversion b/lib/makeversion @@ -0,0 +1,66 @@ +#!/bin/sh -x +# vim: set ft=bash: +FALLBACKVER=${FALLBACKVER:-unknown} + +if [ -d .got ] && command -v got >/dev/null 2>&1; then + lastcommit=$(got log | + awk '/^commit/ {print substr($2,1,7); exit}') + got tag -l | + awk -v lastcommit="$lastcommit" ' + /^object: commit/ { + if (!lasttagcom) + { + lasttagcom = substr($3,1,7) + } + next + } + /^tag/ { + if (!ver) + { + sub(/^v/,"",$2) + ver = $2 + } + next + } + END { + printf "%s", ver + if (lastcommit != lasttagcom) + { + printf "-g%s", lastcommit + } + printf "\n" + }' >version.new +elif [ -d .git ] && command -v git >/dev/null 2>&1; then + LC_ALL=C + export LC_ALL + user=$(getent passwd "$(unalias ls >/dev/null 2>&1 || true; \ + command ls -lnd . | awk '{print $3}')" | awk -F: '{print $1}') + if [ -z "$user" ]; then + printf "$0: error: Cannot determine owner of %s" "$(pwd)" >&2 + exit 1 + fi + e_user=$(id -un) + if [ "$e_user" = "$user" ]; then + git describe 2>/dev/null | sed 's/^v//' >version.new + else + su "$user" -c 'git describe' 2>/dev/null | + sed 's/^v//' >version.new + fi +else + printf "%s\n" "$FALLBACKVER" >version.new +fi + +if [ -f version ]; then + if diff version version.new >/dev/null; then + rm version.new + else + mv version.new version + touch .rebuild + fi +else + mv version.new version + touch .rebuild +fi +if [ "$1" = "-l" ]; then + printf "VERSION=\"%s\"\n" "$(cat version)" +fi diff --git a/lib/mkpack b/lib/mkpack @@ -0,0 +1,20 @@ +#!/bin/sh -x +# vim: set ft=bash: +DISTDIR=$(grep '^PROG[[:space:]]\{1,\}=' config.mk | + sed -E 's,.*=[[:space:]]+([[:alpha:]]+),\1,')-$(cat version) +mkdir "$DISTDIR" +if [ -d .got ] && command -v got >/dev/null 2>&1; then + files=$(got tree | sed -e 's,[@/*$]$,,g') +elif [ -d .git ] && command -v git >/dev/null 2>&1; then + files=$(git ls-files) +else + printf "Either got or git are required for 'make pack'\n" >&2 + exit 1 +fi +for f in $files; do + d="$DISTDIR"/"$(dirname "$f")" + mkdir -p "$d" + cp "$f" "$d"/ +done +tar -cf - "$DISTDIR" | xz -9v - > "$DISTDIR".tar.xz +rm -fr "$DISTDIR" diff --git a/lib/replacepat b/lib/replacepat @@ -0,0 +1,10 @@ +#!/bin/sh +# vim: set ft=bash: +infile="$1" +outfile="$2" +DATE=$(cat date 2>/dev/null) +VERSION=$(cat version 2>/dev/null) + +sed -e 's|%VERSION%|'"$VERSION"'|g' -e 's|%DATE%|'"$DATE"'|g' \ + -e 's|%DATADIR%|'"$DATADIR"'|g' "$infile" \ + > "$outfile" diff --git a/linije.c b/linije.c @@ -0,0 +1,1569 @@ +/* This program is licensed under the terms of GNU GPL v3 or (at your option) + * any later version. Copyright (C) 2025 Страхиња Радић. + * See the file LICENSE for exact copyright and license details. */ + +#include <SDL3/SDL.h> +#include <SDL3_image/SDL_image.h> +#include <assert.h> +#include <errno.h> +#include <math.h> +#include <stdarg.h> +#include <stdio.h> +#include <stdlib.h> +#include <time.h> +#include <unistd.h> + +#include "local.h" +#include "version.h" + +/* clang-format off */ +#define ANIM_SPEED 100 /* how long does it take for the animation to go + * from start to finish (ms) */ +/* clang-format on */ +#define FPS 60 +#define ANIM_STEPS (ANIM_SPEED * FPS / 1000) + +#define BUFSIZE 4096 +#define CELL_SIZE 20 +#define DEFAULT_WIDTH 1280 +#define DEFAULT_HEIGHT 720 +#define HELP_DIALOG_WIDTH 900 +#define HELP_DIALOG_HEIGHT 450 +#define GRID_WIDTH 15 +#define GRID_HEIGHT 15 +#define LOCATION_STACK_MAX (GRID_WIDTH * GRID_HEIGHT) +#define MIN_POP_LEN 5 +/* clang-format off */ +#define POP_STRING_CELL_VALUE 100 /* Multiplied by # of balls in a string and + * added to score when popping a string */ +/* clang-format on */ +#define PRINT_BUFSIZE 4096 +#define PROGNAME "linije" +#define TER12_WIDTH 6 +#define TER12_HEIGHT 12 +#define WIN_TITLE "Linije" + +#define MIN(a, b) (((a) < (b)) ? (a) : (b)) +#define MAX(a, b) (((a) > (b)) ? (a) : (b)) +#define INDEX(x, y) ((y) * GRID_WIDTH + (x)) +#define INDEXFI(x, y) (((int)floor(y)) * GRID_WIDTH + ((int)floor(x))) +#define VALNAME(n) [n] = #n + +/* clang-format off */ +enum { + CELL_EMPTY, + CELL_RED, + CELL_BLUE, + CELL_GREEN, + CELL_PURPLE, + CELL_ORANGE, + CELL_SELECTED +}; + +enum { + STATE_IDLE, + STATE_SELECTION, + STATE_MOVING, + STATE_FAILURE, + STATE_SUCCESS +}; + +const char* cell_names[] = { + VALNAME(CELL_EMPTY), + VALNAME(CELL_RED), + VALNAME(CELL_BLUE), + VALNAME(CELL_GREEN), + VALNAME(CELL_PURPLE), + VALNAME(CELL_ORANGE), + VALNAME(CELL_SELECTED), +}; + +const int check_five_deltas[][4] = { + { -1, -1, 1, 1 }, + { 1, -1, -1, 1 }, + { 0, -1, 0, 1 }, + { -1, 0, 1, 0 }, +}; + +const char* state_descriptions[] = { + "Idle", + "Selecting", + "Moving", + "Failed!", + "Success!" +}; + +const char* help_text[] = { + "linije - Color lines clone", + "==========================", + "Version " VERSION, + "", + "F1 - Show this help screen", + "Esc - Hide this help screen", + "Alt+Enter - Toggle fullscreen", + "C-Q - Exit", + "", + "---", + "", + "This program is licensed under the terms of GNU GPL v3 or (at your", + "option) any later version. Copyright (C) 2025 Strahinya Radich.", + "See the file LICENSE for exact copyright and license details.", + NULL +}; +/* clang-format on */ + +struct AnimationState { + SDL_FPoint start; + SDL_FPoint position; + SDL_FPoint end; + SDL_FPoint delta; + int active; + int step; + int final_step; +}; + +struct Cell { + int empty; /* logical variables */ + int starting; + int ending; + int path; + SDL_FPoint coords; + int contents; + struct Cell* left; + struct Cell* up; + struct Cell* right; + struct Cell* down; + struct Cell* path_source; /* previous cell in shortest path */ + struct Cell* path_next; /* next cell in shortest path */ + int path_dist; /* length of shortest path so far */ +}; + +struct State { + struct AnimationState animation; + struct Cell* grid; + int location_pointer; + SDL_Point* location_stack; + SDL_FPoint pointer; + float cell_scale_factor; + int display_width; /* Physical, detected */ + int display_height; + int full_screen; + int help_shown; + int mode; + struct Cell* path_start; + struct Cell* path_end; + int redraw; + SDL_Renderer* renderer; + int running; + int screen_width; /* Logical */ + int screen_height; + unsigned int score; + SDL_FPoint selection_start, selection_end; + SDL_Texture* sprites; + SDL_Texture* ter12_texture; + SDL_Texture* background; + SDL_Window* window; + float text_scale_factor; +}; + +void assign_pointFF(const SDL_FPoint* from, SDL_FPoint* to); +void assign_pointIF(const SDL_Point* from, SDL_FPoint* to); +void assign_point_xyIF(const int x, const int y, SDL_FPoint* to); +void calculate_delta(struct State* state); +void calculate_grid_origin(const struct State* state, float* sx, float* sy); +void calculate_display_size(struct State* state); +void check_five(struct State* state, struct Cell* c); +void cleanup(struct State* state); +void do_exit(const int code, struct State* state); +void draw(struct State* state); +void draw_background(struct State* state, SDL_FRect* bg_rect); +void draw_help_dialog(struct State* state); +void draw_text(struct State* state, const int x, const int y, + const int font_width, const int font_height, SDL_Texture* font_tex, + const char* text, ...); +void fill_triplet(struct State* state); +void find_shortest_path(struct Cell* c, struct Cell* source, const int dist); +void get_sprite_xy(const char cell, float* x, float* y); +void grid_coord_to_screen_coord(const struct State* state, const int x, + const int y, const float startx, const float starty, float* to_x, + float* to_y); +void grid_coord_to_screen_coordF(const struct State* state, const float x, + const float y, const float startx, const float starty, float* to_x, + float* to_y); +void handle_click(struct State* state); +void handle_event(struct State* state, SDL_Event* event); +void init_cell(struct Cell* c, const SDL_FPoint* coords); +void init_state(struct State* state); +int load_textures(struct State* state); +int location_pop(struct State* state, SDL_Point* location); +void location_push(struct State* state, const SDL_Point* location); +void mark_path(struct Cell* c); +void next_step(struct State* state); +int passable(const struct State* state, const int x, const int y); +void print_matrix(const struct Cell* M); +void print_path(struct Cell* c); +void reset(struct State* state); +void reset_path(struct Cell* grid); +void screen_coord_to_grid_coord(struct State* state, const int x, const int y, + const float startx, const float starty, float* to_x, float* to_y); +void screen_coord_to_grid_coordF(struct State* state, const float x, + const float y, const float startx, const float starty, float* to_x, + float* to_y); +void step_animation(struct State* state); +SDL_Surface* try_load(const char* filename); + +void +assign_pointFF(const SDL_FPoint* from, SDL_FPoint* to) +{ + assert((from != NULL) && (to != NULL)); + to->x = (float)from->x; + to->y = (float)from->y; +} + +void +assign_pointIF(const SDL_Point* from, SDL_FPoint* to) +{ + assert((from != NULL) && (to != NULL)); + to->x = (float)from->x; + to->y = (float)from->y; +} + +void +assign_point_xyIF(const int x, const int y, SDL_FPoint* to) +{ + assert(to != NULL); + to->x = (float)x; + to->y = (float)y; +} + +void +calculate_delta(struct State* state) +{ + struct AnimationState* animation; + + assert(state != NULL); + animation = &state->animation; + animation->delta.x + = fabsf(animation->end.x - animation->start.x) / ANIM_STEPS; + if (animation->end.x < animation->start.x) + animation->delta.x *= -1; + animation->delta.y + = fabsf(animation->end.y - animation->start.y) / ANIM_STEPS; + if (animation->end.y < animation->start.y) + animation->delta.y *= -1; + SDL_LogDebug(SDL_LOG_CATEGORY_APPLICATION, + "calculate_delta: (%0.2f, %0.2f)", animation->delta.x, + animation->delta.y); +} + +void +calculate_grid_origin(const struct State* state, float* sx, float* sy) +{ + int cx, cy; + + assert((state != NULL) && (sx != NULL) && (sy != NULL)); + cx = state->screen_width / 2; + cy = state->screen_height / 2; + + *sx = cx - (state->cell_scale_factor * GRID_WIDTH * CELL_SIZE) / 2; + *sy = cy - (state->cell_scale_factor * GRID_HEIGHT * CELL_SIZE) / 2; +} + +void +calculate_display_size(struct State* state) +{ + assert(state != NULL); + if (!SDL_GetRenderOutputSize(state->renderer, &state->display_width, + &state->display_height)) + { + SDL_LogError(SDL_LOG_CATEGORY_ERROR, + "SDL_GetRenderOutputSize failed"); + do_exit(1, state); + } + SDL_LogDebug(SDL_LOG_CATEGORY_APPLICATION, + "output display size: (%d, %d)", state->display_width, + state->display_height); +} + +void +check_five(struct State* state, struct Cell* c) +{ + struct Cell* current = NULL; + SDL_FPoint start, end; + int x, y, len; + int i; + + i = 0; +check_five_loop: + assign_pointFF(&c->coords, &start); + assign_pointFF(&c->coords, &end); + x = c->coords.x; + y = c->coords.y; + SDL_LogDebug(SDL_LOG_CATEGORY_APPLICATION, "Deltas: %d, %d", + check_five_deltas[i][0], check_five_deltas[i][1]); + len = 1; + while ((x >= 0 && y >= 0) && (x < GRID_WIDTH && y < GRID_HEIGHT)) + { + SDL_LogDebug(SDL_LOG_CATEGORY_APPLICATION, "At (%d, %d): %s", x, + y, cell_names[state->grid[INDEX(x, y)].contents]); + if (state->grid[INDEX(x, y)].contents == c->contents) + { + assign_point_xyIF(x, y, &start); + len++; + } + else + break; + x += check_five_deltas[i][0]; + y += check_five_deltas[i][1]; + } + x = c->coords.x + check_five_deltas[i][2]; + y = c->coords.y + check_five_deltas[i][3]; + SDL_LogDebug(SDL_LOG_CATEGORY_APPLICATION, "Deltas: %d, %d", + check_five_deltas[i][2], check_five_deltas[i][3]); + while ((x >= 0 && y >= 0) && (x < GRID_WIDTH && y < GRID_HEIGHT)) + { + SDL_LogDebug(SDL_LOG_CATEGORY_APPLICATION, "At (%d, %d): %s", x, + y, cell_names[state->grid[INDEX(x, y)].contents]); + if (state->grid[INDEX(x, y)].contents == c->contents) + { + assign_point_xyIF(x, y, &end); + len++; + } + else + break; + x += check_five_deltas[i][2]; + y += check_five_deltas[i][3]; + } + if (len > MIN_POP_LEN) + { + SDL_LogDebug(SDL_LOG_CATEGORY_APPLICATION, + "check_five: String, from (%0.0f, %0.0f) to (%0.0f, " + "%0.0f)", + start.x, start.y, end.x, end.y); + + SDL_LogDebug(SDL_LOG_CATEGORY_APPLICATION, + "for (%0.0f; y != %0.0f + %d; y += %d)", + start.y, end.y, check_five_deltas[i][3], + check_five_deltas[i][3]); + SDL_LogDebug(SDL_LOG_CATEGORY_APPLICATION, + "for (%0.0f; x != %0.0f + %d; x += %d)", + start.x, end.x, check_five_deltas[i][2], + check_five_deltas[i][2]); + x = start.x; + y = start.y; + do + { + current = &state->grid[INDEX(x, y)]; + SDL_LogDebug(SDL_LOG_CATEGORY_APPLICATION, + "Before erase: (%0.0f, %0.0f) [%d, %d] is %s", + current->coords.x, + current->coords.y, + x, y, + cell_names[current->contents]); + current->contents = CELL_EMPTY; + current->empty = 1; + SDL_LogDebug(SDL_LOG_CATEGORY_APPLICATION, + "After erase: (%0.0f, %0.0f) is %s", + current->coords.x, + current->coords.y, + cell_names[current->contents]); + x += check_five_deltas[i][2]; + y += check_five_deltas[i][3]; + } + while (!((x == end.x + check_five_deltas[i][2]) + && (y == end.y + check_five_deltas[i][3]))); + + state->score += len * POP_STRING_CELL_VALUE; + goto check_five_finish; + } + else + { + SDL_LogDebug(SDL_LOG_CATEGORY_APPLICATION, + "check_five: len = %d, not popping", len); + } + i++; + if (i < sizeof(check_five_deltas) / sizeof(check_five_deltas[0])) + goto check_five_loop; + + fill_triplet(state); + +check_five_finish: + state->mode = STATE_IDLE; +} + +void +cleanup(struct State* state) +{ + assert(state != NULL); + + free(state->location_stack); + free(state->grid); + + if (state->background) + SDL_DestroyTexture(state->background); + if (state->ter12_texture) + SDL_DestroyTexture(state->ter12_texture); + if (state->sprites) + SDL_DestroyTexture(state->sprites); + if (state->renderer) + SDL_DestroyRenderer(state->renderer); + if (state->window) + SDL_DestroyWindow(state->window); + + SDL_Quit(); +} + +void +do_exit(const int code, struct State* state) +{ + cleanup(state); + exit(code); +} + +void +draw(struct State* state) +{ + struct Cell* c = NULL; + SDL_FRect bg_rect, cell_rect; + SDL_FRect dest_rect; + int x, y; + float crx, cry; + float drx, dry; + float startx, starty; + + assert(state != NULL); + assert(state->cell_scale_factor != 0.0f); + + calculate_grid_origin(state, &startx, &starty); + + bg_rect.x = 0; + bg_rect.y = 0; + bg_rect.w = state->cell_scale_factor * (CELL_SIZE * GRID_WIDTH + 1); + bg_rect.h = state->cell_scale_factor * (CELL_SIZE * GRID_HEIGHT + 1); + + SDL_SetRenderDrawColor(state->renderer, 0, 0, 0, SDL_ALPHA_OPAQUE); + SDL_RenderClear(state->renderer); + + /* Render background */ + if (!state->background) + draw_background(state, &bg_rect); + + /* Draw buffered copy of background */ + dest_rect.x = startx; + dest_rect.y = starty; + dest_rect.w = bg_rect.w; + dest_rect.h = bg_rect.h; + SDL_RenderLine(state->renderer, 1, 1, 50, 50); + SDL_RenderTexture(state->renderer, state->background, &bg_rect, + &dest_rect); + + /* Draw balls */ + cell_rect.w = CELL_SIZE; + cell_rect.h = CELL_SIZE; + dest_rect.w = state->cell_scale_factor * CELL_SIZE; + dest_rect.h = state->cell_scale_factor * CELL_SIZE; + for (y = 0; y < GRID_HEIGHT; y++) + for (x = 0; x < GRID_WIDTH; x++) + { + c = &state->grid[INDEX(x, y)]; + if (c->contents == CELL_EMPTY) + continue; + + get_sprite_xy(c->contents, &crx, &cry); + cell_rect.x = crx; + cell_rect.y = cry; + if (c->path) + { + grid_coord_to_screen_coord(state, + state->animation.position.x, + state->animation.position.y, startx + 1, + starty + 1, &drx, &dry); + } + else + { + grid_coord_to_screen_coord(state, x, y, + startx + 1, starty + 1, &drx, &dry); + } + dest_rect.x = drx; + dest_rect.y = dry; + SDL_RenderTexture(state->renderer, state->sprites, + &cell_rect, &dest_rect); + } + + /* Draw selection */ + if (state->selection_start.x != -1) + { + get_sprite_xy(CELL_SELECTED, &crx, &cry); + cell_rect.x = crx; + cell_rect.y = cry; + grid_coord_to_screen_coord(state, state->selection_start.x, + state->selection_start.y, startx + 1, starty + 1, &drx, + &dry); + dest_rect.x = drx; + dest_rect.y = dry; + SDL_RenderTexture(state->renderer, state->sprites, &cell_rect, + &dest_rect); + } + + /* Render status */ + draw_text(state, 0, + state->screen_height - state->text_scale_factor * TER12_HEIGHT, + TER12_WIDTH, TER12_HEIGHT, state->ter12_texture, + "Score: %06u F1 = Help Status: %s", state->score, + state_descriptions[state->mode]); + + if (state->help_shown) + draw_help_dialog(state); + + /*draw_text(600, screen_height - text_scale_factor * TER12_HEIGHT, + TER12_WIDTH, TER12_HEIGHT, ter12_texture, "(%05.2f, %05.2f)", + pointer.x, pointer.y);*/ + + SDL_RenderPresent(state->renderer); +} + +void +draw_background(struct State* state, SDL_FRect* bg_rect) +{ + const SDL_DisplayMode* mode; + SDL_FRect cell_rect, dest_rect; + SDL_DisplayID display; + float crx, cry; + float drx, dry; + int x, y; + + assert((state != NULL) && (bg_rect != NULL)); + assert(state->cell_scale_factor != 0.0f); + + if ((display = SDL_GetDisplayForWindow(state->window)) == 0) + { + SDL_LogError(SDL_LOG_CATEGORY_ERROR, + "SDL_GetDisplayForWindow failed: %s", SDL_GetError()); + do_exit(1, state); + } + + if ((mode = SDL_GetCurrentDisplayMode(display)) == NULL) + { + SDL_LogError(SDL_LOG_CATEGORY_ERROR, + "SDL_GetCurrentDisplayMode failed: %s", SDL_GetError()); + do_exit(1, state); + } + + state->background = SDL_CreateTexture(state->renderer, mode->format, + SDL_TEXTUREACCESS_TARGET, bg_rect->w, bg_rect->h); + if (!state->background) + { + SDL_LogError(SDL_LOG_CATEGORY_ERROR, + "SDL_CreateTexture failed: %s", SDL_GetError()); + do_exit(1, state); + } + if (!SDL_SetRenderTarget(state->renderer, state->background)) + { + SDL_LogError(SDL_LOG_CATEGORY_ERROR, + "SDL_SetRenderTarget failed: %s", SDL_GetError()); + do_exit(1, state); + } + + dest_rect.w = state->cell_scale_factor * CELL_SIZE; + dest_rect.h = state->cell_scale_factor * CELL_SIZE; + get_sprite_xy(CELL_EMPTY, &crx, &cry); + cell_rect.x = crx; + cell_rect.y = cry; + cell_rect.w = CELL_SIZE; + cell_rect.h = CELL_SIZE; + for (y = 0; y < GRID_HEIGHT; y++) + for (x = 0; x < GRID_WIDTH; x++) + { + grid_coord_to_screen_coord(state, x, y, 0.0f, 0.0f, + &drx, &dry); + dest_rect.x = state->cell_scale_factor + drx; + dest_rect.y = state->cell_scale_factor + dry; + SDL_RenderTexture(state->renderer, state->sprites, + &cell_rect, &dest_rect); + } + + /* Draw upper border */ + for (x = -1; x < GRID_WIDTH; x++) + { + grid_coord_to_screen_coord(state, x, -1, 0.0f, 0.0f, &drx, &dry); + dest_rect.x = state->cell_scale_factor + drx; + dest_rect.y = state->cell_scale_factor + dry; + SDL_RenderTexture(state->renderer, state->sprites, &cell_rect, + &dest_rect); + } + + /* Draw left border */ + for (y = 0; y < GRID_WIDTH; y++) + { + grid_coord_to_screen_coord(state, -1, y, 0.0f, 0.0f, &drx, &dry); + dest_rect.x = state->cell_scale_factor + drx; + dest_rect.y = state->cell_scale_factor + dry; + SDL_RenderTexture(state->renderer, state->sprites, &cell_rect, + &dest_rect); + } + + SDL_SetRenderDrawBlendMode(state->renderer, SDL_BLENDMODE_NONE); + SDL_SetRenderDrawColor(state->renderer, 255, 255, 255, SDL_ALPHA_OPAQUE); + + SDL_SetRenderTarget(state->renderer, NULL); +} + +void +draw_help_dialog(struct State* state) +{ + const char** phelp_text = help_text; + int sx = state->screen_width / 2 - HELP_DIALOG_WIDTH / 2; + int sy = state->screen_height / 2 - HELP_DIALOG_HEIGHT / 2; + SDL_FRect dialog_rect; + + dialog_rect.x = sx; + dialog_rect.y = sy; + dialog_rect.w = HELP_DIALOG_WIDTH; + dialog_rect.h = HELP_DIALOG_HEIGHT; + + SDL_SetRenderDrawBlendMode(state->renderer, SDL_BLENDMODE_BLEND); + SDL_SetRenderDrawColor(state->renderer, 0, 0, 0, .75 * 255); + SDL_RenderFillRect(state->renderer, &dialog_rect); + + SDL_SetRenderDrawBlendMode(state->renderer, SDL_BLENDMODE_NONE); + SDL_SetRenderDrawColor(state->renderer, 255, 255, 255, SDL_ALPHA_OPAQUE); + SDL_RenderRect(state->renderer, &dialog_rect); + SDL_SetRenderDrawColor(state->renderer, 0, 0, 0, SDL_ALPHA_OPAQUE); + dialog_rect.x--; + dialog_rect.y--; + dialog_rect.w += 2; + dialog_rect.h += 2; + SDL_RenderRect(state->renderer, &dialog_rect); + dialog_rect.x--; + dialog_rect.y--; + dialog_rect.w += 2; + dialog_rect.h += 2; + SDL_RenderRect(state->renderer, &dialog_rect); + + while (*phelp_text) + { + draw_text(state, + sx + state->text_scale_factor * (2 * TER12_WIDTH), + sy + + (phelp_text - help_text + 1) + * state->text_scale_factor + * (TER12_HEIGHT + 2), + TER12_WIDTH, TER12_HEIGHT, state->ter12_texture, + *phelp_text); + phelp_text++; + } +} + +void +draw_text(struct State* state, const int x, const int y, const int font_width, + const int font_height, SDL_Texture* font_tex, const char* text, ...) +{ + char buf[PRINT_BUFSIZE]; + va_list args; + const char* pbuf = NULL; + int xstart = 0; + int ystart = 0; + SDL_FRect source_rect; + SDL_FRect dest_rect; + int index = 0; + int chars_per_row = 0; + char first_char = ' '; + char last_char = '~'; + float tex_w, tex_h; + + assert((font_tex != NULL) && (text != NULL)); + assert(state->text_scale_factor != 0.0f); + assert(font_width != -1); + + va_start(args, text); + vsnprintf(buf, sizeof(buf), text, args); + va_end(args); + + source_rect.w = font_width; + source_rect.h = font_height; + + dest_rect.x = x; + dest_rect.y = y; + dest_rect.w = state->text_scale_factor * font_width; + dest_rect.h = state->text_scale_factor * font_height; + + if (!SDL_GetTextureSize(font_tex, &tex_w, &tex_h)) + { + SDL_LogError(SDL_LOG_CATEGORY_ERROR, + "SDL_GetTextureSize failed: %s", SDL_GetError()); + do_exit(1, state); + } + + chars_per_row = tex_w / (font_width + 1); + + pbuf = buf; + // SDL_SetRenderScale(renderer, scale_factor, scale_factor); + while (*pbuf) + { + if (*pbuf >= first_char && *pbuf <= last_char) + { + index = (int)(*pbuf - first_char); + + xstart = 1 + index % chars_per_row * (font_width + 1); + ystart = 1 + index / chars_per_row * (font_height + 1); + } + else + break; + + source_rect.x = xstart; + source_rect.y = ystart; + + SDL_RenderTexture(state->renderer, font_tex, &source_rect, + &dest_rect); + + dest_rect.x += state->text_scale_factor * font_width; + + pbuf++; + } + // SDL_SetRenderScale(renderer, 1.0f, 1.0f); +} + +void +fill_triplet(struct State* state) +{ + int x, y; + int pass; + char color; + + pass = 0; +fill_triplet_generate: + x = random() % GRID_WIDTH; + y = random() % GRID_HEIGHT; + if (state->grid[INDEX(x, y)].contents != CELL_EMPTY) + goto fill_triplet_generate; + + switch (random() % 5) + { + case 0: + color = CELL_RED; + break; + case 1: + color = CELL_BLUE; + break; + case 2: + color = CELL_GREEN; + break; + case 3: + color = CELL_PURPLE; + break; + default: + color = CELL_ORANGE; + } + state->grid[INDEX(x, y)].contents = color; + state->grid[INDEX(x, y)].empty = 0; + pass++; + SDL_LogDebug(SDL_LOG_CATEGORY_APPLICATION, + "fill_triplet: %s at (%d, %d)", cell_names[(int)color], x, y); + if (pass < 3) + goto fill_triplet_generate; +} + +void +find_shortest_path(struct Cell* c, struct Cell* source, const int dist) +{ + if (!c || c->path_dist <= dist) + return; + + if (!c->empty && !c->starting && !c->ending) + return; + + if (c->starting) + c->path_dist = dist; + + if (c->path_dist > dist) + { + c->path_dist = dist; + c->path_source = source; + } + + if (c->ending) + return; + + find_shortest_path(c->left, c, dist + 1); + find_shortest_path(c->up, c, dist + 1); + find_shortest_path(c->right, c, dist + 1); + find_shortest_path(c->down, c, dist + 1); +} + +void +get_sprite_xy(const char cell, float* x, float* y) +{ + assert((x != NULL) && (y != NULL)); + switch (cell) + { + case CELL_RED: + *x = 1 * CELL_SIZE; + *y = 0; + break; + case CELL_BLUE: + *x = 2 * CELL_SIZE; + *y = 0; + break; + case CELL_GREEN: + *x = 3 * CELL_SIZE; + *y = 0; + break; + case CELL_PURPLE: + *x = 4 * CELL_SIZE; + *y = 0; + break; + case CELL_ORANGE: + *x = 5 * CELL_SIZE; + *y = 0; + break; + case CELL_SELECTED: + *x = 0; + *y = 1 * CELL_SIZE; + break; + default: + *x = 0; + *y = 0; + } + /*SDL_LogDebug("get_sprite_xy: %d @ (%0.0f, %0.0f)", + cell, *x, *y);*/ +} + +void +grid_coord_to_screen_coord(const struct State* state, const int x, const int y, + const float startx, const float starty, float* to_x, float* to_y) +{ + assert((state != NULL) && (to_x != NULL) && (to_y != NULL)); + *to_x = startx + x * state->cell_scale_factor * CELL_SIZE; + *to_y = starty + y * state->cell_scale_factor * CELL_SIZE; +} + +void +grid_coord_to_screen_coordF(const struct State* state, const float x, + const float y, const float startx, const float starty, float* to_x, + float* to_y) +{ + assert((state != NULL) && (to_x != NULL) && (to_y != NULL)); + *to_x = startx + x * state->cell_scale_factor * CELL_SIZE; + *to_y = starty + y * state->cell_scale_factor * CELL_SIZE; +} + +static char* cell_image[] = {"[ ]", "[R]", "[B]", "[G]", "[P]", "[O]", "[/]", + "[S]", "[E]", "[.]"}; + +#define CELL_START 7 +#define CELL_END 8 +#define CELL_PATH 9 + +void +handle_click(struct State* state) +{ + float startx, starty; + + assert(state != NULL); + if (state->mode == STATE_IDLE) + { + calculate_grid_origin(state, &startx, &starty); + screen_coord_to_grid_coord(state, state->pointer.x, + state->pointer.y, startx, starty, + &state->selection_start.x, &state->selection_start.y); + state->animation.start.x = (int)state->selection_start.x; + state->animation.start.y = (int)state->selection_start.y; + state->animation.position.x = state->animation.start.x; + state->animation.position.y = state->animation.start.y; + state->path_start + = &state->grid[INDEXFI(state->animation.start.x, + state->animation.start.y)]; + SDL_LogDebug(SDL_LOG_CATEGORY_APPLICATION, + "path_start(%0.2f, %0.2f)->empty = %s", + state->path_start->coords.x, + state->path_start->coords.y, + state->path_start->empty ? "TRUE" : "FALSE"); + if (state->path_start->empty) + { + state->path_start = NULL; + state->selection_start.x = -1; + state->selection_start.y = -1; + return; + } + + state->mode = STATE_SELECTION; + state->path_start->starting = 1; + SDL_LogDebug(SDL_LOG_CATEGORY_APPLICATION, + "[origin = (%0.2f, %0.2f)] " + "pointer = (%0.2f, %0.2f) => " + "selected = (%0.2f, %0.2f)", + startx, starty, state->pointer.x, state->pointer.y, + state->selection_start.x, state->selection_start.y); + state->redraw = 1; + } + else if (state->mode == STATE_SELECTION) + { + state->mode = STATE_MOVING; + calculate_grid_origin(state, &startx, &starty); + screen_coord_to_grid_coord(state, state->pointer.x, + state->pointer.y, startx, starty, + &state->selection_end.x, &state->selection_end.y); + state->path_end = &state->grid[INDEXFI(state->selection_end.x, + state->selection_end.y)]; + + if (!state->path_end->empty) + goto handle_click_reset; + + SDL_LogDebug(SDL_LOG_CATEGORY_APPLICATION, + "[origin = (%0.2f, %0.2f)] " + "pointer = (%0.2f, %0.2f) => " + "selected_end = (%0.2f, %0.2f)", + startx, starty, state->pointer.x, state->pointer.y, + state->selection_end.x, state->selection_end.y); + + SDL_LogDebug(SDL_LOG_CATEGORY_APPLICATION, + "Path: (%0.0f, %0.0f) to (%0.0f, %0.0f)", + state->path_start->coords.x, + state->path_start->coords.y, state->path_end->coords.x, + state->path_end->coords.y); + state->path_end->ending = 1; + + find_shortest_path(state->path_start, NULL, 0); + mark_path(state->path_end); + printf("M =\n"); + print_matrix(state->grid); + + /* Should never happen */ + if (!state->path_start->path_next) + goto handle_click_reset; + + state->animation.end.x = state->path_start->path_next->coords.x; + state->animation.end.y = state->path_start->path_next->coords.y; + SDL_LogDebug(SDL_LOG_CATEGORY_APPLICATION, + "Animation: (%0.0f, %0.0f) to (%0.0f, %0.0f)", + state->animation.start.x, state->animation.start.y, + state->animation.end.x, state->animation.end.y); + state->selection_start.x = -1; + state->selection_start.y = -1; + calculate_delta(state); + state->animation.step = 1; + state->animation.final_step = ANIM_STEPS; + state->animation.active = 1; + state->redraw = 1; + print_path(&state->grid[INDEXFI(state->animation.start.x, + state->animation.start.y)]); + } + return; + +handle_click_reset: + SDL_LogDebug(SDL_LOG_CATEGORY_APPLICATION, "handle_click: Reset"); + state->selection_start.x = -1; + state->selection_start.y = -1; + state->path_start->starting = 0; + state->path_start = NULL; + state->path_end->ending = 0; + state->path_end = NULL; + state->mode = STATE_IDLE; + state->redraw = 1; +} + +void +handle_event(struct State* state, SDL_Event* event) +{ + /* assert(3) within the SDL_PollEvent(3) loop hangs the entire system + * when given an argument which evaluates to zero, so we are taking the + * risk here (and only here) */ + /*assert((state != NULL) && (event != NULL));*/ + + switch (event->type) + { + case SDL_EVENT_QUIT: + state->running = 0; + break; + case SDL_EVENT_WINDOW_RESIZED: + state->redraw = 1; + calculate_display_size(state); + break; + case SDL_EVENT_KEY_DOWN: + SDL_LogDebug(SDL_LOG_CATEGORY_APPLICATION, + "Got Keydown, key = %X, mod = %X", event->key.key, + event->key.mod); + + switch (event->key.key) + { + case SDLK_F1: + state->help_shown = 1; + state->redraw = 1; + break; + case SDLK_RETURN: + if (!(event->key.mod & SDL_KMOD_ALT)) + break; + state->full_screen = !state->full_screen; + SDL_LogDebug(SDL_LOG_CATEGORY_APPLICATION, + "Set fullscreen state: %s", + state->full_screen ? "ON" : "OFF"); + SDL_SetWindowFullscreen(state->window, + state->full_screen); + break; + case SDLK_ESCAPE: + state->help_shown = 0; + state->redraw = 1; + break; + case SDLK_Q: + if (event->key.mod & SDL_KMOD_CTRL) + state->running = 0; + break; + default: + SDL_LogDebug(SDL_LOG_CATEGORY_APPLICATION, + "Handle keyboard event: switch fallthrough"); + } + break; + case SDL_EVENT_MOUSE_BUTTON_UP: + handle_click(state); + break; + case SDL_EVENT_MOUSE_MOTION: + state->pointer.x = event->motion.x; + state->pointer.y = event->motion.y; + state->redraw = 1; + break; + } +} + +void +init_animation(struct AnimationState* animation) +{ + assert(animation != NULL); + animation->start.x = -1; + animation->start.y = -1; + animation->position.x = -1; + animation->position.y = -1; + animation->end.x = -1; + animation->end.y = -1; + animation->delta.x = 0; + animation->delta.y = 0; + animation->active = 0; + animation->step = 0; + animation->final_step = 0; +} + +void +init_cell(struct Cell* c, const SDL_FPoint* coords) +{ + assert((c != NULL) && (coords != NULL)); + c->empty = 1; + c->starting = 0; + c->ending = 0; + c->path = 0; + c->coords.x = coords->x; + c->coords.y = coords->y; + c->contents = CELL_EMPTY; + c->left = c->up = c->right = c->down = NULL; + c->path_source = NULL; + c->path_dist = INT_MAX; +} + +void +init_state(struct State* state) +{ + assert(state != NULL); + init_animation(&state->animation); + state->grid = NULL; + state->location_pointer = 0; + state->location_stack = NULL; + state->cell_scale_factor = 2.0f; + state->display_width = DEFAULT_WIDTH; + state->display_height = DEFAULT_HEIGHT; + state->full_screen = 1; + state->help_shown = 0; + state->path_start = NULL; + state->path_end = NULL; + state->redraw = 1; + state->renderer = NULL; + state->running = 1; + state->screen_width = DEFAULT_WIDTH; + state->screen_height = DEFAULT_HEIGHT; + state->score = 0; + state->sprites = NULL; + state->mode = STATE_IDLE; + state->ter12_texture = NULL; + state->background = NULL; + state->window = NULL; + state->text_scale_factor = 2.0f; +} + +int +load_textures(struct State* state) +{ + SDL_Surface* surface = NULL; + SDL_ScaleMode scale_mode = SDL_SCALEMODE_PIXELART; + + assert(state != NULL); + + surface = try_load(SPRITES_PNG); + if (!surface) + return -1; + state->sprites = SDL_CreateTextureFromSurface(state->renderer, surface); + if (!state->sprites) + { + SDL_LogError(SDL_LOG_CATEGORY_ERROR, + "SDL_CreateTextureFromSurface failed: %s", + SDL_GetError()); + do_exit(1, state); + } + SDL_SetTextureScaleMode(state->sprites, scale_mode); + SDL_DestroySurface(surface); + + surface = try_load(TER12_PNG); + if (!surface) + return -1; + state->ter12_texture + = SDL_CreateTextureFromSurface(state->renderer, surface); + if (!state->ter12_texture) + { + SDL_LogError(SDL_LOG_CATEGORY_ERROR, + "SDL_CreateTextureFromSurface failed: %s", + SDL_GetError()); + do_exit(1, state); + } + SDL_SetTextureScaleMode(state->ter12_texture, scale_mode); + SDL_DestroySurface(surface); + + return 0; +} + +int +location_pop(struct State* state, SDL_Point* location) +{ + assert((state != NULL) && (location != NULL)); + if (state->location_pointer == 0) + return 1; + state->location_pointer--; + location->x = state->location_stack[state->location_pointer].x; + location->y = state->location_stack[state->location_pointer].y; + return 0; +} + +void +location_push(struct State* state, const SDL_Point* location) +{ + assert(location != NULL); + state->location_stack[state->location_pointer].x = location->x; + state->location_stack[state->location_pointer].y = location->y; + state->location_pointer++; +} + +void +mark_path(struct Cell* c) +{ + if (!c) + return; + + c->path = 1; + if (c->path_source) + { + c->path_source->path_next = c; + SDL_LogDebug(SDL_LOG_CATEGORY_APPLICATION, + "mark_path: Next of (%0.0f, %0.0f) is (%0.0f, %0.0f)", + c->path_source->coords.x, c->path_source->coords.y, + c->path_source->path_next->coords.x, + c->path_source->path_next->coords.y); + } + mark_path(c->path_source); +} + +void +next_step(struct State* state) +{ + assert(state != NULL); + state->redraw = 1; +} + +int +passable(const struct State* state, const int x, const int y) +{ + assert(state != NULL); + return x >= 0 && x < GRID_WIDTH && y >= 0 && y < GRID_HEIGHT + && state->grid[INDEX(x, y)].contents == CELL_EMPTY; +} + +void +print_matrix(const struct Cell* M) +{ + const struct Cell* c = NULL; + int x, y; + + for (y = 0; y < GRID_HEIGHT; y++) + { + for (x = 0; x < GRID_WIDTH; x++) + { + c = &M[INDEX(x, y)]; + if (c->starting) + printf("%s", cell_image[CELL_START]); + else if (c->ending) + printf("%s", cell_image[CELL_END]); + else if (c->path) + printf("%s", cell_image[CELL_PATH]); + else if (!c->empty) + printf("%s", cell_image[c->contents]); + else + printf("%s", cell_image[CELL_EMPTY]); + } + printf("\n"); + } + // printf("\n"); +} + +void +print_path(struct Cell* c) +{ + printf("(%0.0f, %0.0f)", c->coords.x, c->coords.y); + if (c->path_next) + { + printf(" -> "); + print_path(c->path_next); + } + else + printf("\n"); +} + +void +reset(struct State* state) +{ + for (int y = 0; y < GRID_HEIGHT; y++) + for (int x = 0; x < GRID_WIDTH; x++) + state->grid[INDEX(x, y)].contents = CELL_EMPTY; + state->mode = STATE_IDLE; + state->selection_start.x = -1; + state->selection_start.y = -1; + state->selection_end.x = -1; + state->selection_end.y = -1; + state->location_pointer = 0; + state->animation.active = 0; + state->redraw = 1; +} + +void +reset_path(struct Cell* grid) +{ + struct Cell* c = NULL; + int x, y; + + assert(grid != NULL); + + for (y = 0; y < GRID_HEIGHT; y++) + for (x = 0; x < GRID_WIDTH; x++) + { + c = &grid[INDEX(x, y)]; + c->path_source = NULL; + c->path_next = NULL; + c->path_dist = INT_MAX; + c->starting = 0; + c->ending = 0; + c->path = 0; + } +} + +void +screen_coord_to_grid_coord(struct State* state, const int x, const int y, + const float startx, const float starty, float* to_x, float* to_y) +{ + float _factor_x, _factor_y; + float _startx, _starty; + + assert(state != NULL); + assert((to_x != NULL) && (to_y != NULL) + && (state->cell_scale_factor != 0.0f)); + _factor_x = (float)state->display_width / state->screen_width; + _factor_y = (float)state->display_height / state->screen_height; + _startx = startx * _factor_x; + _starty = starty * _factor_y; + + /* clang-format off */ + *to_x = x >= _startx + ? (x < _startx + _factor_x * state->cell_scale_factor + * CELL_SIZE * GRID_WIDTH + ? (x - _startx) / (_factor_x * state->cell_scale_factor + * CELL_SIZE) + : GRID_WIDTH - 1) + : 0; + *to_y = y >= _starty + ? (y < _starty + _factor_y * state->cell_scale_factor + * CELL_SIZE * GRID_HEIGHT + ? (y - _starty) / (_factor_y * state->cell_scale_factor + * CELL_SIZE) + : GRID_HEIGHT - 1) + : 0; + /* clang-format on */ +} + +void +screen_coord_to_grid_coordF(struct State* state, const float x, const float y, + const float startx, const float starty, float* to_x, float* to_y) +{ + float _factor_x, _factor_y; + float _startx, _starty; + + assert(state != NULL); + assert((to_x != NULL) && (to_y != NULL) + && (state->cell_scale_factor != 0.0f)); + _factor_x = (float)state->display_width / state->screen_width; + _factor_y = (float)state->display_height / state->screen_height; + _startx = startx * _factor_x; + _starty = starty * _factor_y; + + /* clang-format off */ + *to_x = x >= _startx + ? (x < _startx + _factor_x * state->cell_scale_factor + * CELL_SIZE * GRID_WIDTH + ? (x - _startx) / (_factor_x * state->cell_scale_factor + * CELL_SIZE) + : GRID_WIDTH - 1) + : 0; + *to_y = y >= _starty + ? (y < _starty + _factor_y * state->cell_scale_factor + * CELL_SIZE * GRID_HEIGHT + ? (y - _starty) / (_factor_y * state->cell_scale_factor + * CELL_SIZE) + : GRID_HEIGHT - 1) + : 0; + /* clang-format on */ +} + +void +step_animation(struct State* state) +{ + struct Cell* from = NULL; + struct Cell* to = NULL; + int isx, isy, iex, iey; + + if (state->animation.step == state->animation.final_step) + { + isx = (int)round(state->animation.start.x); + isy = (int)round(state->animation.start.y); + iex = (int)round(state->animation.end.x); + iey = (int)round(state->animation.end.y); + from = &state->grid[INDEX(isx, isy)]; + to = &state->grid[INDEX(iex, iey)]; + + if (to->ending) + { + state->animation.active = 0; + SDL_LogDebug(SDL_LOG_CATEGORY_APPLICATION, + "Ending node reached: (%0.0f, %0.0f)", + state->animation.end.x, state->animation.end.y); + } + else if (to->path_next) + { + state->animation.start.x = state->animation.end.x; + state->animation.start.y = state->animation.end.y; + state->animation.position.x = state->animation.start.x; + state->animation.position.y = state->animation.start.y; + state->animation.end.x = to->path_next->coords.x; + state->animation.end.y = to->path_next->coords.y; + SDL_LogDebug(SDL_LOG_CATEGORY_APPLICATION, + "Next node on path: (%0.0f, %0.0f)", + state->animation.end.x, state->animation.end.y); + SDL_LogDebug(SDL_LOG_CATEGORY_APPLICATION, + "Animation: (%0.0f, %0.0f) to (%0.0f, %0.0f)", + state->animation.start.x, + state->animation.start.y, + state->animation.end.x, state->animation.end.y); + calculate_delta(state); + state->animation.step = 1; + } + else + { + SDL_LogDebug(SDL_LOG_CATEGORY_APPLICATION, + "End of path at (%0.0f, %0.0f)", + state->animation.end.x, state->animation.end.y); + state->animation.active = 0; + } + + SDL_LogDebug(SDL_LOG_CATEGORY_APPLICATION, + "grid[%d][%d] = %d <-> grid[%d][%d] = %d", iey, iex, + to->contents, isy, isx, from->contents); + to->contents = from->contents; + from->contents = CELL_EMPTY; + to->empty = 0; + from->empty = 1; + + if (to->ending) + { + reset_path(state->grid); + state->path_start = NULL; + state->path_end = NULL; + + check_five(state, to); + } + } + + // print_path(&grid[INDEXFI(animation.start.x, animation.start.y)]); + state->animation.position.x += state->animation.delta.x; + state->animation.position.y += state->animation.delta.y; + state->animation.step++; + SDL_LogDebug(SDL_LOG_CATEGORY_APPLICATION, + "step_animation: (%0.2f, %0.2f) => (%0.2f, %0.2f), [%d/%d] %s", + state->animation.position.x, state->animation.position.y, + state->animation.end.x, state->animation.end.y, + state->animation.step, state->animation.final_step, + state->animation.active ? "ACTIVE" : "INACTIVE"); +} + +SDL_Surface* +try_load(const char* filename) +{ + SDL_Surface* surface = NULL; + char tex_pathname[BUFSIZE]; + + assert(filename != NULL); + snprintf(tex_pathname, BUFSIZE, "%s/%s", DATADIR, filename); + surface = IMG_Load(tex_pathname); + if (!surface) + { + SDL_LogError(SDL_LOG_CATEGORY_ERROR, + "try_load: IMG_Load failed: %s", SDL_GetError()); + snprintf(tex_pathname, BUFSIZE, "./%s", filename); + SDL_LogDebug(SDL_LOG_CATEGORY_APPLICATION, + "try_load: trying %s", tex_pathname); + surface = IMG_Load(tex_pathname); + if (!surface) + { + SDL_LogError(SDL_LOG_CATEGORY_ERROR, + "try_load: IMG_Load failed: %s", + SDL_GetError()); + exit(1); + } + SDL_LogDebug(SDL_LOG_CATEGORY_APPLICATION, + "try_load: success (%s)", tex_pathname); + } + + return surface; +} + +int +main(int argc, char** argv) +{ + SDL_Event event; + struct Cell* c = NULL; + struct State state; + struct timespec now; + SDL_FPoint coords; + float px, py; + clockid_t cid; + unsigned int last_time, current_time; + int x, y; + + /*atexit(&cleanup);*/ + + init_state(&state); + + if (!SDL_Init(SDL_INIT_VIDEO)) + { + SDL_LogError(SDL_LOG_CATEGORY_ERROR, "SDL_Init failed: %s", + SDL_GetError()); + exit(1); + } + + SDL_SetLogPriorities(SDL_LOG_PRIORITY_DEBUG); + if (!SDL_CreateWindowAndRenderer(WIN_TITLE, DEFAULT_WIDTH, + DEFAULT_HEIGHT, + SDL_WINDOW_FULLSCREEN | SDL_WINDOW_BORDERLESS, + &state.window, &state.renderer)) + { + SDL_LogError(SDL_LOG_CATEGORY_ERROR, + "SDL_CreateWindowAndRenderer failed: %s", + SDL_GetError()); + do_exit(1, &state); + } + + SDL_SetHintWithPriority(SDL_HINT_RENDER_VSYNC, "1", SDL_HINT_OVERRIDE); + SDL_SetRenderLogicalPresentation(state.renderer, DEFAULT_WIDTH, + DEFAULT_HEIGHT, SDL_LOGICAL_PRESENTATION_LETTERBOX); + + calculate_display_size(&state); + + state.grid = malloc(sizeof(struct Cell) * GRID_WIDTH * GRID_HEIGHT + 1); + if (!state.grid) + { + SDL_LogError(SDL_LOG_CATEGORY_ERROR, "calloc failed"); + do_exit(1, &state); + } + for (y = 0; y < GRID_HEIGHT; y++) + for (x = 0; x < GRID_WIDTH; x++) + { + c = &state.grid[INDEX(x, y)]; + coords.x = x; + coords.y = y; + init_cell(c, &coords); + if (x > 0) + c->left = &state.grid[INDEX(x - 1, y)]; + if (y > 0) + c->up = &state.grid[INDEX(x, y - 1)]; + if (x < GRID_WIDTH - 1) + c->right = &state.grid[INDEX(x + 1, y)]; + if (y < GRID_HEIGHT - 1) + c->down = &state.grid[INDEX(x, y + 1)]; + } + + /*grid.width = GRID_WIDTH; + grid.height = GRID_HEIGHT; + grid.cells = (char**)calloc(GRID_HEIGHT, sizeof(char*)); + if (!grid.cells) + { + SDL_LogError(SDL_LOG_CATEGORY_ERROR, "calloc failed"); + exit(1); + } + for (y = 0; y < GRID_HEIGHT; y++) + { + grid.cells[y] = (char*)calloc(GRID_WIDTH, 1); + if (!grid.cells[y]) + { + SDL_LogError(SDL_LOG_CATEGORY_ERROR, "calloc failed"); + exit(1); + } + }*/ + + if (load_textures(&state) < 0) + do_exit(1, &state); + + state.location_stack + = (SDL_Point*)calloc(LOCATION_STACK_MAX, sizeof(SDL_Point)); + state.animation.active = 0; + + SDL_GetMouseState(&px, &py); + state.pointer.x = px; + state.pointer.y = py; + + last_time = SDL_GetTicks(); + clock_getcpuclockid(getpid(), &cid); + clock_gettime(cid, &now); + srandom(now.tv_sec); + + state.selection_start.x = -1; + state.selection_start.y = -1; + state.selection_end.x = -1; + state.selection_end.y = -1; + + fill_triplet(&state); + while (state.running) + { + current_time = SDL_GetTicks(); + if (state.animation.active) + { + if (current_time > last_time + 1000 / 60) + { + draw(&state); + step_animation(&state); + last_time = current_time; + } + } + else + { + if (state.redraw) + { + draw(&state); + state.redraw = 0; + } + } + + while (SDL_PollEvent(&event)) + handle_event(&state, &event); + } + + return 0; +} diff --git a/local.h.in b/local.h.in @@ -0,0 +1,7 @@ +/* This program is licensed under the terms of GNU GPL v3 or (at your option) + * any later version. Copyright (C) 2025 Страхиња Радић. + * See the file LICENSE for exact copyright and license details. */ + +#define DATADIR "%DATADIR%" +#define TER12_PNG "ter12.png" +#define SPRITES_PNG "sprites.png" diff --git a/owner b/owner @@ -0,0 +1 @@ +Страхиња Радић diff --git a/sprites.png b/sprites.png Бинарне датотеке се разликују. diff --git a/sprites.xcf.xz b/sprites.xcf.xz Бинарне датотеке се разликују. diff --git a/tags b/tags @@ -0,0 +1,676 @@ +!_TAG_EXTRA_DESCRIPTION anonymous /Include tags for non-named objects like lambda/ +!_TAG_EXTRA_DESCRIPTION fileScope /Include tags of file scope/ +!_TAG_EXTRA_DESCRIPTION pseudo /Include pseudo tags/ +!_TAG_EXTRA_DESCRIPTION subparser /Include tags generated by subparsers/ +!_TAG_FIELD_DESCRIPTION epoch /the last modified time of the input file (only for F\/file kind tag)/ +!_TAG_FIELD_DESCRIPTION file /File-restricted scoping/ +!_TAG_FIELD_DESCRIPTION input /input file/ +!_TAG_FIELD_DESCRIPTION name /tag name/ +!_TAG_FIELD_DESCRIPTION pattern /pattern/ +!_TAG_FIELD_DESCRIPTION typeref /Type and name of a variable or typedef/ +!_TAG_FIELD_DESCRIPTION!C++ name /aliased names/ +!_TAG_FILE_FORMAT 2 /extended format; --format=1 will not append ;" to lines/ +!_TAG_FILE_SORTED 1 /0=unsorted, 1=sorted, 2=foldcase/ +!_TAG_KIND_DESCRIPTION!C d,macro /macro definitions/ +!_TAG_KIND_DESCRIPTION!C e,enumerator /enumerators (values inside an enumeration)/ +!_TAG_KIND_DESCRIPTION!C f,function /function definitions/ +!_TAG_KIND_DESCRIPTION!C g,enum /enumeration names/ +!_TAG_KIND_DESCRIPTION!C h,header /included header files/ +!_TAG_KIND_DESCRIPTION!C m,member /struct, and union members/ +!_TAG_KIND_DESCRIPTION!C s,struct /structure names/ +!_TAG_KIND_DESCRIPTION!C t,typedef /typedefs/ +!_TAG_KIND_DESCRIPTION!C u,union /union names/ +!_TAG_KIND_DESCRIPTION!C v,variable /variable definitions/ +!_TAG_KIND_DESCRIPTION!C++ c,class /classes/ +!_TAG_KIND_DESCRIPTION!C++ d,macro /macro definitions/ +!_TAG_KIND_DESCRIPTION!C++ e,enumerator /enumerators (values inside an enumeration)/ +!_TAG_KIND_DESCRIPTION!C++ f,function /function definitions/ +!_TAG_KIND_DESCRIPTION!C++ g,enum /enumeration names/ +!_TAG_KIND_DESCRIPTION!C++ h,header /included header files/ +!_TAG_KIND_DESCRIPTION!C++ m,member /class, struct, and union members/ +!_TAG_KIND_DESCRIPTION!C++ n,namespace /namespaces/ +!_TAG_KIND_DESCRIPTION!C++ s,struct /structure names/ +!_TAG_KIND_DESCRIPTION!C++ t,typedef /typedefs/ +!_TAG_KIND_DESCRIPTION!C++ u,union /union names/ +!_TAG_KIND_DESCRIPTION!C++ v,variable /variable definitions/ +!_TAG_OUTPUT_EXCMD mixed /number, pattern, mixed, or combineV2/ +!_TAG_OUTPUT_FILESEP slash /slash or backslash/ +!_TAG_OUTPUT_MODE u-ctags /u-ctags or e-ctags/ +!_TAG_OUTPUT_VERSION 0.0 /current.age/ +!_TAG_PARSER_VERSION!C 1.1 /current.age/ +!_TAG_PARSER_VERSION!C++ 1.1 /current.age/ +!_TAG_PATTERN_LENGTH_LIMIT 96 /0 for no limit/ +!_TAG_PROC_CWD /home/strajder/src/linije/ // +!_TAG_PROGRAM_AUTHOR Universal Ctags Team // +!_TAG_PROGRAM_NAME Universal Ctags /Derived from Exuberant Ctags/ +!_TAG_PROGRAM_URL https://ctags.io/ /official site/ +!_TAG_PROGRAM_VERSION 6.1.0 // +!_TAG_ROLE_DESCRIPTION!C!function foreigndecl /declared in foreign languages/ +!_TAG_ROLE_DESCRIPTION!C!header local /local header/ +!_TAG_ROLE_DESCRIPTION!C!header system /system header/ +!_TAG_ROLE_DESCRIPTION!C!macro undef /undefined/ +!_TAG_ROLE_DESCRIPTION!C!struct foreigndecl /declared in foreign languages/ +!_TAG_ROLE_DESCRIPTION!C++!header local /local header/ +!_TAG_ROLE_DESCRIPTION!C++!header system /system header/ +!_TAG_ROLE_DESCRIPTION!C++!macro undef /undefined/ +ANIM_SPEED /home/strajder/src/lav-sdl/lav-sdl.c /^#define ANIM_SPEED /;" d file: +ANIM_SPEED /home/strajder/src/linije/linije.c /^#define ANIM_SPEED /;" d file: +ANIM_STEPS /home/strajder/src/lav-sdl/lav-sdl.c /^#define ANIM_STEPS /;" d file: +ANIM_STEPS /home/strajder/src/linije/linije.c /^#define ANIM_STEPS /;" d file: +AnimationState /home/strajder/src/lav-sdl/lav-sdl.c /^struct AnimationState {$/;" s file: +AnimationState /home/strajder/src/linije/linije.c /^struct AnimationState {$/;" s file: +BUFSIZE /home/strajder/src/lav-sdl/lav-sdl.c /^#define BUFSIZE /;" d file: +BUFSIZE /home/strajder/src/linije/linije.c /^#define BUFSIZE /;" d file: +CELL_BLUE /home/strajder/src/linije/linije.c /^ CELL_BLUE,$/;" e enum:__anonf7ed0ac70103 file: +CELL_BLUE /home/strajder/src/linije/linije.c /^ CELL_BLUE,$/;" e enum:__anonf7ed0ac70303 file: +CELL_EMPTY /home/strajder/src/lav-sdl/lav-sdl.c /^ CELL_EMPTY,$/;" e enum:__anona07934b70103 file: +CELL_EMPTY /home/strajder/src/linije/linije.c /^ CELL_EMPTY,$/;" e enum:__anonf7ed0ac70103 file: +CELL_EMPTY /home/strajder/src/linije/linije.c /^ CELL_EMPTY,$/;" e enum:__anonf7ed0ac70303 file: +CELL_EMPTY /home/strajder/tmp/pathfind/pf2.c /^enum { CELL_EMPTY, CELL_FULL, CELL_START, CELL_END, CELL_PATH };$/;" e enum:__anonbf6a67100103 file: +CELL_END /home/strajder/src/lav-sdl/lav-sdl.c /^ CELL_END$/;" e enum:__anona07934b70103 file: +CELL_END /home/strajder/src/linije/linije.c /^ CELL_END$/;" e enum:__anonf7ed0ac70103 file: +CELL_END /home/strajder/src/linije/linije.c /^#define CELL_END /;" d file: +CELL_END /home/strajder/tmp/pathfind/pf2.c /^enum { CELL_EMPTY, CELL_FULL, CELL_START, CELL_END, CELL_PATH };$/;" e enum:__anonbf6a67100103 file: +CELL_FAIL /home/strajder/src/lav-sdl/lav-sdl.c /^ CELL_FAIL,$/;" e enum:__anona07934b70103 file: +CELL_FAIL /home/strajder/src/linije/linije.c /^ CELL_FAIL,$/;" e enum:__anonf7ed0ac70103 file: +CELL_FULL /home/strajder/tmp/pathfind/pf2.c /^enum { CELL_EMPTY, CELL_FULL, CELL_START, CELL_END, CELL_PATH };$/;" e enum:__anonbf6a67100103 file: +CELL_GREEN /home/strajder/src/linije/linije.c /^ CELL_GREEN,$/;" e enum:__anonf7ed0ac70103 file: +CELL_GREEN /home/strajder/src/linije/linije.c /^ CELL_GREEN,$/;" e enum:__anonf7ed0ac70303 file: +CELL_OK /home/strajder/src/lav-sdl/lav-sdl.c /^ CELL_OK,$/;" e enum:__anona07934b70103 file: +CELL_OK /home/strajder/src/linije/linije.c /^ CELL_OK,$/;" e enum:__anonf7ed0ac70103 file: +CELL_ORANGE /home/strajder/src/linije/linije.c /^ CELL_ORANGE$/;" e enum:__anonf7ed0ac70103 file: +CELL_ORANGE /home/strajder/src/linije/linije.c /^ CELL_ORANGE$/;" e enum:__anonf7ed0ac70303 file: +CELL_ORANGE /home/strajder/src/linije/linije.c /^ CELL_ORANGE,$/;" e enum:__anonf7ed0ac70103 file: +CELL_ORANGE /home/strajder/src/linije/linije.c /^ CELL_ORANGE,$/;" e enum:__anonf7ed0ac70303 file: +CELL_PATH /home/strajder/src/linije/linije.c /^#define CELL_PATH /;" d file: +CELL_PATH /home/strajder/tmp/pathfind/pf2.c /^enum { CELL_EMPTY, CELL_FULL, CELL_START, CELL_END, CELL_PATH };$/;" e enum:__anonbf6a67100103 file: +CELL_PURPLE /home/strajder/src/linije/linije.c /^ CELL_PURPLE,$/;" e enum:__anonf7ed0ac70103 file: +CELL_PURPLE /home/strajder/src/linije/linije.c /^ CELL_PURPLE,$/;" e enum:__anonf7ed0ac70303 file: +CELL_RED /home/strajder/src/linije/linije.c /^ CELL_RED,$/;" e enum:__anonf7ed0ac70103 file: +CELL_RED /home/strajder/src/linije/linije.c /^ CELL_RED,$/;" e enum:__anonf7ed0ac70303 file: +CELL_SELECTED /home/strajder/src/linije/linije.c /^ CELL_SELECTED$/;" e enum:__anonf7ed0ac70103 file: +CELL_SELECTED /home/strajder/src/linije/linije.c /^ CELL_SELECTED$/;" e enum:__anonf7ed0ac70303 file: +CELL_SIZE /home/strajder/src/lav-sdl/lav-sdl.c /^#define CELL_SIZE /;" d file: +CELL_SIZE /home/strajder/src/linije/linije.c /^#define CELL_SIZE /;" d file: +CELL_START /home/strajder/src/lav-sdl/lav-sdl.c /^ CELL_START,$/;" e enum:__anona07934b70103 file: +CELL_START /home/strajder/src/linije/linije.c /^ CELL_START,$/;" e enum:__anonf7ed0ac70103 file: +CELL_START /home/strajder/src/linije/linije.c /^#define CELL_START /;" d file: +CELL_START /home/strajder/tmp/pathfind/pf2.c /^enum { CELL_EMPTY, CELL_FULL, CELL_START, CELL_END, CELL_PATH };$/;" e enum:__anonbf6a67100103 file: +CELL_WALL /home/strajder/src/lav-sdl/lav-sdl.c /^ CELL_WALL,$/;" e enum:__anona07934b70103 file: +CELL_WALL /home/strajder/src/linije/linije.c /^ CELL_WALL,$/;" e enum:__anonf7ed0ac70103 file: +Cell /home/strajder/src/linije/linije.c /^struct Cell {$/;" s file: +Cell /home/strajder/tmp/pathfind/pf2.c /^struct Cell {$/;" s file: +Coord /home/strajder/src/linije/linije.c /^struct Coord {$/;" s file: +Coord /home/strajder/tmp/pathfind/pf2.c /^struct Coord {$/;" s file: +DEFAULT_HEIGHT /home/strajder/src/lav-sdl/lav-sdl.c /^#define DEFAULT_HEIGHT /;" d file: +DEFAULT_HEIGHT /home/strajder/src/linije/linije.c /^#define DEFAULT_HEIGHT /;" d file: +DEFAULT_WIDTH /home/strajder/src/lav-sdl/lav-sdl.c /^#define DEFAULT_WIDTH /;" d file: +DEFAULT_WIDTH /home/strajder/src/linije/linije.c /^#define DEFAULT_WIDTH /;" d file: +FPS /home/strajder/src/lav-sdl/lav-sdl.c /^#define FPS /;" d file: +FPS /home/strajder/src/linije/linije.c /^#define FPS /;" d file: +GRID_HEIGHT /home/strajder/src/linije/linije.c /^#define GRID_HEIGHT /;" d file: +GRID_WIDTH /home/strajder/src/linije/linije.c /^#define GRID_WIDTH /;" d file: +Grid /home/strajder/src/linije/linije.c /^struct Grid {$/;" s file: +H /home/strajder/tmp/pathfind/pf2.c /^#define H /;" d file: +HELP_DIALOG_HEIGHT /home/strajder/src/lav-sdl/lav-sdl.c /^#define HELP_DIALOG_HEIGHT /;" d file: +HELP_DIALOG_HEIGHT /home/strajder/src/linije/linije.c /^#define HELP_DIALOG_HEIGHT /;" d file: +HELP_DIALOG_WIDTH /home/strajder/src/lav-sdl/lav-sdl.c /^#define HELP_DIALOG_WIDTH /;" d file: +HELP_DIALOG_WIDTH /home/strajder/src/linije/linije.c /^#define HELP_DIALOG_WIDTH /;" d file: +INDEX /home/strajder/src/linije/linije.c /^#define INDEX(/;" d file: +INDEX /home/strajder/tmp/pathfind/pf2.c /^#define INDEX(/;" d file: +INDEXFI /home/strajder/src/linije/linije.c /^#define INDEXFI(/;" d file: +LABYRINTH_MAXHEIGHT /home/strajder/src/lav-sdl/lav-sdl.c /^#define LABYRINTH_MAXHEIGHT /;" d file: +LABYRINTH_MAXHEIGHT /home/strajder/src/linije/linije.c /^#define LABYRINTH_MAXHEIGHT /;" d file: +LABYRINTH_MAXWIDTH /home/strajder/src/lav-sdl/lav-sdl.c /^#define LABYRINTH_MAXWIDTH /;" d file: +LABYRINTH_MAXWIDTH /home/strajder/src/linije/linije.c /^#define LABYRINTH_MAXWIDTH /;" d file: +LOCATION_STACK_MAX /home/strajder/src/lav-sdl/lav-sdl.c /^#define LOCATION_STACK_MAX /;" d file: +LOCATION_STACK_MAX /home/strajder/src/linije/linije.c /^#define LOCATION_STACK_MAX /;" d file: +Labyrinth /home/strajder/src/lav-sdl/lav-sdl.c /^struct Labyrinth {$/;" s file: +Labyrinth /home/strajder/src/linije/linije.c /^struct Labyrinth {$/;" s file: +MAX /home/strajder/src/lav-sdl/lav-sdl.c /^#define MAX(/;" d file: +MAX /home/strajder/src/linije/linije.c /^#define MAX(/;" d file: +MIN /home/strajder/src/lav-sdl/lav-sdl.c /^#define MIN(/;" d file: +MIN /home/strajder/src/linije/linije.c /^#define MIN(/;" d file: +MIN_POP_LEN /home/strajder/src/linije/linije.c /^#define MIN_POP_LEN /;" d file: +MIN_POP_LEN /home/strajder/src/linije/linije.c /^#define MIN_POP_LEN /;" d file: +POP_STRING_CELL_VALUE /home/strajder/src/linije/linije.c /^#define POP_STRING_CELL_VALUE /;" d file: +PRINT_BUFSIZE /home/strajder/src/lav-sdl/lav-sdl.c /^#define PRINT_BUFSIZE /;" d file: +PRINT_BUFSIZE /home/strajder/src/linije/linije.c /^#define PRINT_BUFSIZE /;" d file: +PRINT_BUFSIZE /home/strajder/src/linije/linije.c /^#define PRINT_BUFSIZE /;" d file: +PROGNAME /home/strajder/src/lav-sdl/lav-sdl.c /^#define PROGNAME /;" d file: +PROGNAME /home/strajder/src/linije/linije.c /^#define PROGNAME /;" d file: +PROGNAME /home/strajder/src/linije/linije.c /^#define PROGNAME /;" d file: +SDL_DEBUG_TEXT_FONT_CHARACTER_SIZE /usr/local/include/SDL3/SDL_render.h /^#define SDL_DEBUG_TEXT_FONT_CHARACTER_SIZE /;" d +SDL_GPURenderState /usr/local/include/SDL3/SDL_render.h /^typedef struct SDL_GPURenderState SDL_GPURenderState;$/;" t typeref:struct:SDL_GPURenderState +SDL_GPURenderStateDesc /usr/local/include/SDL3/SDL_render.h /^typedef struct SDL_GPURenderStateDesc$/;" s +SDL_GPURenderStateDesc /usr/local/include/SDL3/SDL_render.h /^} SDL_GPURenderStateDesc;$/;" t typeref:struct:SDL_GPURenderStateDesc +SDL_LOGICAL_PRESENTATION_DISABLED /usr/local/include/SDL3/SDL_render.h /^ SDL_LOGICAL_PRESENTATION_DISABLED, \/**< There is no logical size in effect *\/$/;" e enum:SDL_RendererLogicalPresentation +SDL_LOGICAL_PRESENTATION_INTEGER_SCALE /usr/local/include/SDL3/SDL_render.h /^ SDL_LOGICAL_PRESENTATION_INTEGER_SCALE \/**< The rendered content is scaled up by integer /;" e enum:SDL_RendererLogicalPresentation +SDL_LOGICAL_PRESENTATION_LETTERBOX /usr/local/include/SDL3/SDL_render.h /^ SDL_LOGICAL_PRESENTATION_LETTERBOX, \/**< The rendered content is fit to the largest dimensi/;" e enum:SDL_RendererLogicalPresentation +SDL_LOGICAL_PRESENTATION_OVERSCAN /usr/local/include/SDL3/SDL_render.h /^ SDL_LOGICAL_PRESENTATION_OVERSCAN, \/**< The rendered content is fit to the smallest dimens/;" e enum:SDL_RendererLogicalPresentation +SDL_LOGICAL_PRESENTATION_STRETCH /usr/local/include/SDL3/SDL_render.h /^ SDL_LOGICAL_PRESENTATION_STRETCH, \/**< The rendered content is stretched to the output re/;" e enum:SDL_RendererLogicalPresentation +SDL_LogDebug /home/strajder/src/linije/linije.c /^SDL_LogDebug(const char* fmt, ...)$/;" f typeref:typename:void +SDL_LogError /home/strajder/src/linije/linije.c /^SDL_LogError(const char* fmt, ...)$/;" f typeref:typename:void +SDL_PROP_RENDERER_CREATE_GPU_SHADERS_DXIL_BOOLEAN /usr/local/include/SDL3/SDL_render.h /^#define SDL_PROP_RENDERER_CREATE_GPU_SHADERS_DXIL_BOOLEAN /;" d +SDL_PROP_RENDERER_CREATE_GPU_SHADERS_MSL_BOOLEAN /usr/local/include/SDL3/SDL_render.h /^#define SDL_PROP_RENDERER_CREATE_GPU_SHADERS_MSL_BOOLEAN /;" d +SDL_PROP_RENDERER_CREATE_GPU_SHADERS_SPIRV_BOOLEAN /usr/local/include/SDL3/SDL_render.h /^#define SDL_PROP_RENDERER_CREATE_GPU_SHADERS_SPIRV_BOOLEAN /;" d +SDL_PROP_RENDERER_CREATE_NAME_STRING /usr/local/include/SDL3/SDL_render.h /^#define SDL_PROP_RENDERER_CREATE_NAME_STRING /;" d +SDL_PROP_RENDERER_CREATE_OUTPUT_COLORSPACE_NUMBER /usr/local/include/SDL3/SDL_render.h /^#define SDL_PROP_RENDERER_CREATE_OUTPUT_COLORSPACE_NUMBER /;" d +SDL_PROP_RENDERER_CREATE_PRESENT_VSYNC_NUMBER /usr/local/include/SDL3/SDL_render.h /^#define SDL_PROP_RENDERER_CREATE_PRESENT_VSYNC_NUMBER /;" d +SDL_PROP_RENDERER_CREATE_SURFACE_POINTER /usr/local/include/SDL3/SDL_render.h /^#define SDL_PROP_RENDERER_CREATE_SURFACE_POINTER /;" d +SDL_PROP_RENDERER_CREATE_VULKAN_DEVICE_POINTER /usr/local/include/SDL3/SDL_render.h /^#define SDL_PROP_RENDERER_CREATE_VULKAN_DEVICE_POINTER /;" d +SDL_PROP_RENDERER_CREATE_VULKAN_GRAPHICS_QUEUE_FAMILY_INDEX_NUMBER /usr/local/include/SDL3/SDL_render.h /^#define SDL_PROP_RENDERER_CREATE_VULKAN_GRAPHICS_QUEUE_FAMILY_INDEX_NUMBER /;" d +SDL_PROP_RENDERER_CREATE_VULKAN_INSTANCE_POINTER /usr/local/include/SDL3/SDL_render.h /^#define SDL_PROP_RENDERER_CREATE_VULKAN_INSTANCE_POINTER /;" d +SDL_PROP_RENDERER_CREATE_VULKAN_PHYSICAL_DEVICE_POINTER /usr/local/include/SDL3/SDL_render.h /^#define SDL_PROP_RENDERER_CREATE_VULKAN_PHYSICAL_DEVICE_POINTER /;" d +SDL_PROP_RENDERER_CREATE_VULKAN_PRESENT_QUEUE_FAMILY_INDEX_NUMBER /usr/local/include/SDL3/SDL_render.h /^#define SDL_PROP_RENDERER_CREATE_VULKAN_PRESENT_QUEUE_FAMILY_INDEX_NUMBER /;" d +SDL_PROP_RENDERER_CREATE_VULKAN_SURFACE_NUMBER /usr/local/include/SDL3/SDL_render.h /^#define SDL_PROP_RENDERER_CREATE_VULKAN_SURFACE_NUMBER /;" d +SDL_PROP_RENDERER_CREATE_WINDOW_POINTER /usr/local/include/SDL3/SDL_render.h /^#define SDL_PROP_RENDERER_CREATE_WINDOW_POINTER /;" d +SDL_PROP_RENDERER_D3D11_DEVICE_POINTER /usr/local/include/SDL3/SDL_render.h /^#define SDL_PROP_RENDERER_D3D11_DEVICE_POINTER /;" d +SDL_PROP_RENDERER_D3D11_SWAPCHAIN_POINTER /usr/local/include/SDL3/SDL_render.h /^#define SDL_PROP_RENDERER_D3D11_SWAPCHAIN_POINTER /;" d +SDL_PROP_RENDERER_D3D12_COMMAND_QUEUE_POINTER /usr/local/include/SDL3/SDL_render.h /^#define SDL_PROP_RENDERER_D3D12_COMMAND_QUEUE_POINTER /;" d +SDL_PROP_RENDERER_D3D12_DEVICE_POINTER /usr/local/include/SDL3/SDL_render.h /^#define SDL_PROP_RENDERER_D3D12_DEVICE_POINTER /;" d +SDL_PROP_RENDERER_D3D12_SWAPCHAIN_POINTER /usr/local/include/SDL3/SDL_render.h /^#define SDL_PROP_RENDERER_D3D12_SWAPCHAIN_POINTER /;" d +SDL_PROP_RENDERER_D3D9_DEVICE_POINTER /usr/local/include/SDL3/SDL_render.h /^#define SDL_PROP_RENDERER_D3D9_DEVICE_POINTER /;" d +SDL_PROP_RENDERER_GPU_DEVICE_POINTER /usr/local/include/SDL3/SDL_render.h /^#define SDL_PROP_RENDERER_GPU_DEVICE_POINTER /;" d +SDL_PROP_RENDERER_HDR_ENABLED_BOOLEAN /usr/local/include/SDL3/SDL_render.h /^#define SDL_PROP_RENDERER_HDR_ENABLED_BOOLEAN /;" d +SDL_PROP_RENDERER_HDR_HEADROOM_FLOAT /usr/local/include/SDL3/SDL_render.h /^#define SDL_PROP_RENDERER_HDR_HEADROOM_FLOAT /;" d +SDL_PROP_RENDERER_MAX_TEXTURE_SIZE_NUMBER /usr/local/include/SDL3/SDL_render.h /^#define SDL_PROP_RENDERER_MAX_TEXTURE_SIZE_NUMBER /;" d +SDL_PROP_RENDERER_NAME_STRING /usr/local/include/SDL3/SDL_render.h /^#define SDL_PROP_RENDERER_NAME_STRING /;" d +SDL_PROP_RENDERER_OUTPUT_COLORSPACE_NUMBER /usr/local/include/SDL3/SDL_render.h /^#define SDL_PROP_RENDERER_OUTPUT_COLORSPACE_NUMBER /;" d +SDL_PROP_RENDERER_SDR_WHITE_POINT_FLOAT /usr/local/include/SDL3/SDL_render.h /^#define SDL_PROP_RENDERER_SDR_WHITE_POINT_FLOAT /;" d +SDL_PROP_RENDERER_SURFACE_POINTER /usr/local/include/SDL3/SDL_render.h /^#define SDL_PROP_RENDERER_SURFACE_POINTER /;" d +SDL_PROP_RENDERER_TEXTURE_FORMATS_POINTER /usr/local/include/SDL3/SDL_render.h /^#define SDL_PROP_RENDERER_TEXTURE_FORMATS_POINTER /;" d +SDL_PROP_RENDERER_VSYNC_NUMBER /usr/local/include/SDL3/SDL_render.h /^#define SDL_PROP_RENDERER_VSYNC_NUMBER /;" d +SDL_PROP_RENDERER_VULKAN_DEVICE_POINTER /usr/local/include/SDL3/SDL_render.h /^#define SDL_PROP_RENDERER_VULKAN_DEVICE_POINTER /;" d +SDL_PROP_RENDERER_VULKAN_GRAPHICS_QUEUE_FAMILY_INDEX_NUMBER /usr/local/include/SDL3/SDL_render.h /^#define SDL_PROP_RENDERER_VULKAN_GRAPHICS_QUEUE_FAMILY_INDEX_NUMBER /;" d +SDL_PROP_RENDERER_VULKAN_INSTANCE_POINTER /usr/local/include/SDL3/SDL_render.h /^#define SDL_PROP_RENDERER_VULKAN_INSTANCE_POINTER /;" d +SDL_PROP_RENDERER_VULKAN_PHYSICAL_DEVICE_POINTER /usr/local/include/SDL3/SDL_render.h /^#define SDL_PROP_RENDERER_VULKAN_PHYSICAL_DEVICE_POINTER /;" d +SDL_PROP_RENDERER_VULKAN_PRESENT_QUEUE_FAMILY_INDEX_NUMBER /usr/local/include/SDL3/SDL_render.h /^#define SDL_PROP_RENDERER_VULKAN_PRESENT_QUEUE_FAMILY_INDEX_NUMBER /;" d +SDL_PROP_RENDERER_VULKAN_SURFACE_NUMBER /usr/local/include/SDL3/SDL_render.h /^#define SDL_PROP_RENDERER_VULKAN_SURFACE_NUMBER /;" d +SDL_PROP_RENDERER_VULKAN_SWAPCHAIN_IMAGE_COUNT_NUMBER /usr/local/include/SDL3/SDL_render.h /^#define SDL_PROP_RENDERER_VULKAN_SWAPCHAIN_IMAGE_COUNT_NUMBER /;" d +SDL_PROP_RENDERER_WINDOW_POINTER /usr/local/include/SDL3/SDL_render.h /^#define SDL_PROP_RENDERER_WINDOW_POINTER /;" d +SDL_PROP_TEXTURE_ACCESS_NUMBER /usr/local/include/SDL3/SDL_render.h /^#define SDL_PROP_TEXTURE_ACCESS_NUMBER /;" d +SDL_PROP_TEXTURE_COLORSPACE_NUMBER /usr/local/include/SDL3/SDL_render.h /^#define SDL_PROP_TEXTURE_COLORSPACE_NUMBER /;" d +SDL_PROP_TEXTURE_CREATE_ACCESS_NUMBER /usr/local/include/SDL3/SDL_render.h /^#define SDL_PROP_TEXTURE_CREATE_ACCESS_NUMBER /;" d +SDL_PROP_TEXTURE_CREATE_COLORSPACE_NUMBER /usr/local/include/SDL3/SDL_render.h /^#define SDL_PROP_TEXTURE_CREATE_COLORSPACE_NUMBER /;" d +SDL_PROP_TEXTURE_CREATE_D3D11_TEXTURE_POINTER /usr/local/include/SDL3/SDL_render.h /^#define SDL_PROP_TEXTURE_CREATE_D3D11_TEXTURE_POINTER /;" d +SDL_PROP_TEXTURE_CREATE_D3D11_TEXTURE_U_POINTER /usr/local/include/SDL3/SDL_render.h /^#define SDL_PROP_TEXTURE_CREATE_D3D11_TEXTURE_U_POINTER /;" d +SDL_PROP_TEXTURE_CREATE_D3D11_TEXTURE_V_POINTER /usr/local/include/SDL3/SDL_render.h /^#define SDL_PROP_TEXTURE_CREATE_D3D11_TEXTURE_V_POINTER /;" d +SDL_PROP_TEXTURE_CREATE_D3D12_TEXTURE_POINTER /usr/local/include/SDL3/SDL_render.h /^#define SDL_PROP_TEXTURE_CREATE_D3D12_TEXTURE_POINTER /;" d +SDL_PROP_TEXTURE_CREATE_D3D12_TEXTURE_U_POINTER /usr/local/include/SDL3/SDL_render.h /^#define SDL_PROP_TEXTURE_CREATE_D3D12_TEXTURE_U_POINTER /;" d +SDL_PROP_TEXTURE_CREATE_D3D12_TEXTURE_V_POINTER /usr/local/include/SDL3/SDL_render.h /^#define SDL_PROP_TEXTURE_CREATE_D3D12_TEXTURE_V_POINTER /;" d +SDL_PROP_TEXTURE_CREATE_FORMAT_NUMBER /usr/local/include/SDL3/SDL_render.h /^#define SDL_PROP_TEXTURE_CREATE_FORMAT_NUMBER /;" d +SDL_PROP_TEXTURE_CREATE_HDR_HEADROOM_FLOAT /usr/local/include/SDL3/SDL_render.h /^#define SDL_PROP_TEXTURE_CREATE_HDR_HEADROOM_FLOAT /;" d +SDL_PROP_TEXTURE_CREATE_HEIGHT_NUMBER /usr/local/include/SDL3/SDL_render.h /^#define SDL_PROP_TEXTURE_CREATE_HEIGHT_NUMBER /;" d +SDL_PROP_TEXTURE_CREATE_METAL_PIXELBUFFER_POINTER /usr/local/include/SDL3/SDL_render.h /^#define SDL_PROP_TEXTURE_CREATE_METAL_PIXELBUFFER_POINTER /;" d +SDL_PROP_TEXTURE_CREATE_OPENGLES2_TEXTURE_NUMBER /usr/local/include/SDL3/SDL_render.h /^#define SDL_PROP_TEXTURE_CREATE_OPENGLES2_TEXTURE_NUMBER /;" d +SDL_PROP_TEXTURE_CREATE_OPENGLES2_TEXTURE_UV_NUMBER /usr/local/include/SDL3/SDL_render.h /^#define SDL_PROP_TEXTURE_CREATE_OPENGLES2_TEXTURE_UV_NUMBER /;" d +SDL_PROP_TEXTURE_CREATE_OPENGLES2_TEXTURE_U_NUMBER /usr/local/include/SDL3/SDL_render.h /^#define SDL_PROP_TEXTURE_CREATE_OPENGLES2_TEXTURE_U_NUMBER /;" d +SDL_PROP_TEXTURE_CREATE_OPENGLES2_TEXTURE_V_NUMBER /usr/local/include/SDL3/SDL_render.h /^#define SDL_PROP_TEXTURE_CREATE_OPENGLES2_TEXTURE_V_NUMBER /;" d +SDL_PROP_TEXTURE_CREATE_OPENGL_TEXTURE_NUMBER /usr/local/include/SDL3/SDL_render.h /^#define SDL_PROP_TEXTURE_CREATE_OPENGL_TEXTURE_NUMBER /;" d +SDL_PROP_TEXTURE_CREATE_OPENGL_TEXTURE_UV_NUMBER /usr/local/include/SDL3/SDL_render.h /^#define SDL_PROP_TEXTURE_CREATE_OPENGL_TEXTURE_UV_NUMBER /;" d +SDL_PROP_TEXTURE_CREATE_OPENGL_TEXTURE_U_NUMBER /usr/local/include/SDL3/SDL_render.h /^#define SDL_PROP_TEXTURE_CREATE_OPENGL_TEXTURE_U_NUMBER /;" d +SDL_PROP_TEXTURE_CREATE_OPENGL_TEXTURE_V_NUMBER /usr/local/include/SDL3/SDL_render.h /^#define SDL_PROP_TEXTURE_CREATE_OPENGL_TEXTURE_V_NUMBER /;" d +SDL_PROP_TEXTURE_CREATE_SDR_WHITE_POINT_FLOAT /usr/local/include/SDL3/SDL_render.h /^#define SDL_PROP_TEXTURE_CREATE_SDR_WHITE_POINT_FLOAT /;" d +SDL_PROP_TEXTURE_CREATE_VULKAN_TEXTURE_NUMBER /usr/local/include/SDL3/SDL_render.h /^#define SDL_PROP_TEXTURE_CREATE_VULKAN_TEXTURE_NUMBER /;" d +SDL_PROP_TEXTURE_CREATE_WIDTH_NUMBER /usr/local/include/SDL3/SDL_render.h /^#define SDL_PROP_TEXTURE_CREATE_WIDTH_NUMBER /;" d +SDL_PROP_TEXTURE_D3D11_TEXTURE_POINTER /usr/local/include/SDL3/SDL_render.h /^#define SDL_PROP_TEXTURE_D3D11_TEXTURE_POINTER /;" d +SDL_PROP_TEXTURE_D3D11_TEXTURE_U_POINTER /usr/local/include/SDL3/SDL_render.h /^#define SDL_PROP_TEXTURE_D3D11_TEXTURE_U_POINTER /;" d +SDL_PROP_TEXTURE_D3D11_TEXTURE_V_POINTER /usr/local/include/SDL3/SDL_render.h /^#define SDL_PROP_TEXTURE_D3D11_TEXTURE_V_POINTER /;" d +SDL_PROP_TEXTURE_D3D12_TEXTURE_POINTER /usr/local/include/SDL3/SDL_render.h /^#define SDL_PROP_TEXTURE_D3D12_TEXTURE_POINTER /;" d +SDL_PROP_TEXTURE_D3D12_TEXTURE_U_POINTER /usr/local/include/SDL3/SDL_render.h /^#define SDL_PROP_TEXTURE_D3D12_TEXTURE_U_POINTER /;" d +SDL_PROP_TEXTURE_D3D12_TEXTURE_V_POINTER /usr/local/include/SDL3/SDL_render.h /^#define SDL_PROP_TEXTURE_D3D12_TEXTURE_V_POINTER /;" d +SDL_PROP_TEXTURE_FORMAT_NUMBER /usr/local/include/SDL3/SDL_render.h /^#define SDL_PROP_TEXTURE_FORMAT_NUMBER /;" d +SDL_PROP_TEXTURE_HDR_HEADROOM_FLOAT /usr/local/include/SDL3/SDL_render.h /^#define SDL_PROP_TEXTURE_HDR_HEADROOM_FLOAT /;" d +SDL_PROP_TEXTURE_HEIGHT_NUMBER /usr/local/include/SDL3/SDL_render.h /^#define SDL_PROP_TEXTURE_HEIGHT_NUMBER /;" d +SDL_PROP_TEXTURE_OPENGLES2_TEXTURE_NUMBER /usr/local/include/SDL3/SDL_render.h /^#define SDL_PROP_TEXTURE_OPENGLES2_TEXTURE_NUMBER /;" d +SDL_PROP_TEXTURE_OPENGLES2_TEXTURE_TARGET_NUMBER /usr/local/include/SDL3/SDL_render.h /^#define SDL_PROP_TEXTURE_OPENGLES2_TEXTURE_TARGET_NUMBER /;" d +SDL_PROP_TEXTURE_OPENGLES2_TEXTURE_UV_NUMBER /usr/local/include/SDL3/SDL_render.h /^#define SDL_PROP_TEXTURE_OPENGLES2_TEXTURE_UV_NUMBER /;" d +SDL_PROP_TEXTURE_OPENGLES2_TEXTURE_U_NUMBER /usr/local/include/SDL3/SDL_render.h /^#define SDL_PROP_TEXTURE_OPENGLES2_TEXTURE_U_NUMBER /;" d +SDL_PROP_TEXTURE_OPENGLES2_TEXTURE_V_NUMBER /usr/local/include/SDL3/SDL_render.h /^#define SDL_PROP_TEXTURE_OPENGLES2_TEXTURE_V_NUMBER /;" d +SDL_PROP_TEXTURE_OPENGL_TEXTURE_NUMBER /usr/local/include/SDL3/SDL_render.h /^#define SDL_PROP_TEXTURE_OPENGL_TEXTURE_NUMBER /;" d +SDL_PROP_TEXTURE_OPENGL_TEXTURE_TARGET_NUMBER /usr/local/include/SDL3/SDL_render.h /^#define SDL_PROP_TEXTURE_OPENGL_TEXTURE_TARGET_NUMBER /;" d +SDL_PROP_TEXTURE_OPENGL_TEXTURE_UV_NUMBER /usr/local/include/SDL3/SDL_render.h /^#define SDL_PROP_TEXTURE_OPENGL_TEXTURE_UV_NUMBER /;" d +SDL_PROP_TEXTURE_OPENGL_TEXTURE_U_NUMBER /usr/local/include/SDL3/SDL_render.h /^#define SDL_PROP_TEXTURE_OPENGL_TEXTURE_U_NUMBER /;" d +SDL_PROP_TEXTURE_OPENGL_TEXTURE_V_NUMBER /usr/local/include/SDL3/SDL_render.h /^#define SDL_PROP_TEXTURE_OPENGL_TEXTURE_V_NUMBER /;" d +SDL_PROP_TEXTURE_OPENGL_TEX_H_FLOAT /usr/local/include/SDL3/SDL_render.h /^#define SDL_PROP_TEXTURE_OPENGL_TEX_H_FLOAT /;" d +SDL_PROP_TEXTURE_OPENGL_TEX_W_FLOAT /usr/local/include/SDL3/SDL_render.h /^#define SDL_PROP_TEXTURE_OPENGL_TEX_W_FLOAT /;" d +SDL_PROP_TEXTURE_SDR_WHITE_POINT_FLOAT /usr/local/include/SDL3/SDL_render.h /^#define SDL_PROP_TEXTURE_SDR_WHITE_POINT_FLOAT /;" d +SDL_PROP_TEXTURE_VULKAN_TEXTURE_NUMBER /usr/local/include/SDL3/SDL_render.h /^#define SDL_PROP_TEXTURE_VULKAN_TEXTURE_NUMBER /;" d +SDL_PROP_TEXTURE_WIDTH_NUMBER /usr/local/include/SDL3/SDL_render.h /^#define SDL_PROP_TEXTURE_WIDTH_NUMBER /;" d +SDL_RENDERER_VSYNC_ADAPTIVE /usr/local/include/SDL3/SDL_render.h /^#define SDL_RENDERER_VSYNC_ADAPTIVE /;" d +SDL_RENDERER_VSYNC_DISABLED /usr/local/include/SDL3/SDL_render.h /^#define SDL_RENDERER_VSYNC_DISABLED /;" d +SDL_Renderer /usr/local/include/SDL3/SDL_render.h /^typedef struct SDL_Renderer SDL_Renderer;$/;" t typeref:struct:SDL_Renderer +SDL_RendererLogicalPresentation /usr/local/include/SDL3/SDL_render.h /^typedef enum SDL_RendererLogicalPresentation$/;" g +SDL_RendererLogicalPresentation /usr/local/include/SDL3/SDL_render.h /^} SDL_RendererLogicalPresentation;$/;" t typeref:enum:SDL_RendererLogicalPresentation +SDL_SOFTWARE_RENDERER /usr/local/include/SDL3/SDL_render.h /^#define SDL_SOFTWARE_RENDERER /;" d +SDL_TEXTUREACCESS_STATIC /usr/local/include/SDL3/SDL_render.h /^ SDL_TEXTUREACCESS_STATIC, \/**< Changes rarely, not lockable *\/$/;" e enum:SDL_TextureAccess +SDL_TEXTUREACCESS_STREAMING /usr/local/include/SDL3/SDL_render.h /^ SDL_TEXTUREACCESS_STREAMING, \/**< Changes frequently, lockable *\/$/;" e enum:SDL_TextureAccess +SDL_TEXTUREACCESS_TARGET /usr/local/include/SDL3/SDL_render.h /^ SDL_TEXTUREACCESS_TARGET \/**< Texture can be used as a render target *\/$/;" e enum:SDL_TextureAccess +SDL_TEXTURE_ADDRESS_AUTO /usr/local/include/SDL3/SDL_render.h /^ SDL_TEXTURE_ADDRESS_AUTO, \/**< Wrapping is enabled if texture coordinates are outside [0,/;" e enum:SDL_TextureAddressMode +SDL_TEXTURE_ADDRESS_CLAMP /usr/local/include/SDL3/SDL_render.h /^ SDL_TEXTURE_ADDRESS_CLAMP, \/**< Texture coordinates are clamped to the [0, 1] range *\/$/;" e enum:SDL_TextureAddressMode +SDL_TEXTURE_ADDRESS_INVALID /usr/local/include/SDL3/SDL_render.h /^ SDL_TEXTURE_ADDRESS_INVALID = -1,$/;" e enum:SDL_TextureAddressMode +SDL_TEXTURE_ADDRESS_WRAP /usr/local/include/SDL3/SDL_render.h /^ SDL_TEXTURE_ADDRESS_WRAP \/**< The texture is repeated (tiled) *\/$/;" e enum:SDL_TextureAddressMode +SDL_Texture /usr/local/include/SDL3/SDL_render.h /^struct SDL_Texture$/;" s +SDL_Texture /usr/local/include/SDL3/SDL_render.h /^typedef struct SDL_Texture SDL_Texture;$/;" t typeref:struct:SDL_Texture +SDL_TextureAccess /usr/local/include/SDL3/SDL_render.h /^typedef enum SDL_TextureAccess$/;" g +SDL_TextureAccess /usr/local/include/SDL3/SDL_render.h /^} SDL_TextureAccess;$/;" t typeref:enum:SDL_TextureAccess +SDL_TextureAddressMode /usr/local/include/SDL3/SDL_render.h /^typedef enum SDL_TextureAddressMode$/;" g +SDL_TextureAddressMode /usr/local/include/SDL3/SDL_render.h /^} SDL_TextureAddressMode;$/;" t typeref:enum:SDL_TextureAddressMode +SDL_Vertex /usr/local/include/SDL3/SDL_render.h /^typedef struct SDL_Vertex$/;" s +SDL_Vertex /usr/local/include/SDL3/SDL_render.h /^} SDL_Vertex;$/;" t typeref:struct:SDL_Vertex +SDL_render_h_ /usr/local/include/SDL3/SDL_render.h /^#define SDL_render_h_$/;" d +STATE_FAILURE /home/strajder/src/lav-sdl/lav-sdl.c /^ STATE_FAILURE,$/;" e enum:__anona07934b70203 file: +STATE_FAILURE /home/strajder/src/linije/linije.c /^ STATE_FAILURE,$/;" e enum:__anonf7ed0ac70203 file: +STATE_FAILURE /home/strajder/src/linije/linije.c /^ STATE_FAILURE,$/;" e enum:__anonf7ed0ac70403 file: +STATE_IDLE /home/strajder/src/linije/linije.c /^ STATE_IDLE,$/;" e enum:__anonf7ed0ac70203 file: +STATE_IDLE /home/strajder/src/linije/linije.c /^ STATE_IDLE,$/;" e enum:__anonf7ed0ac70403 file: +STATE_MOVING /home/strajder/src/linije/linije.c /^ STATE_MOVING,$/;" e enum:__anonf7ed0ac70203 file: +STATE_MOVING /home/strajder/src/linije/linije.c /^ STATE_MOVING,$/;" e enum:__anonf7ed0ac70403 file: +STATE_SEARCHING /home/strajder/src/lav-sdl/lav-sdl.c /^ STATE_SEARCHING,$/;" e enum:__anona07934b70203 file: +STATE_SEARCHING /home/strajder/src/linije/linije.c /^ STATE_SEARCHING,$/;" e enum:__anonf7ed0ac70203 file: +STATE_SEARCHING /home/strajder/src/linije/linije.c /^ STATE_SEARCHING,$/;" e enum:__anonf7ed0ac70403 file: +STATE_SEARCHING_PAUSED /home/strajder/src/lav-sdl/lav-sdl.c /^ STATE_SEARCHING_PAUSED,$/;" e enum:__anona07934b70203 file: +STATE_SEARCHING_PAUSED /home/strajder/src/linije/linije.c /^ STATE_SEARCHING_PAUSED,$/;" e enum:__anonf7ed0ac70203 file: +STATE_SEARCHING_PAUSED /home/strajder/src/linije/linije.c /^ STATE_SEARCHING_PAUSED,$/;" e enum:__anonf7ed0ac70403 file: +STATE_SELECTION /home/strajder/src/linije/linije.c /^ STATE_SELECTION,$/;" e enum:__anonf7ed0ac70203 file: +STATE_SELECTION /home/strajder/src/linije/linije.c /^ STATE_SELECTION,$/;" e enum:__anonf7ed0ac70403 file: +STATE_SUCCESS /home/strajder/src/lav-sdl/lav-sdl.c /^ STATE_SUCCESS$/;" e enum:__anona07934b70203 file: +STATE_SUCCESS /home/strajder/src/linije/linije.c /^ STATE_SUCCESS$/;" e enum:__anonf7ed0ac70203 file: +STATE_SUCCESS /home/strajder/src/linije/linije.c /^ STATE_SUCCESS$/;" e enum:__anonf7ed0ac70403 file: +State /home/strajder/src/linije/linije.c /^struct State {$/;" s file: +TER12_HEIGHT /home/strajder/src/lav-sdl/lav-sdl.c /^#define TER12_HEIGHT /;" d file: +TER12_HEIGHT /home/strajder/src/linije/linije.c /^#define TER12_HEIGHT /;" d file: +TER12_HEIGHT /home/strajder/src/linije/linije.c /^#define TER12_HEIGHT /;" d file: +TER12_WIDTH /home/strajder/src/lav-sdl/lav-sdl.c /^#define TER12_WIDTH /;" d file: +TER12_WIDTH /home/strajder/src/linije/linije.c /^#define TER12_WIDTH /;" d file: +TER12_WIDTH /home/strajder/src/linije/linije.c /^#define TER12_WIDTH /;" d file: +VALNAME /home/strajder/src/linije/linije.c /^#define VALNAME(/;" d file: +W /home/strajder/tmp/pathfind/pf2.c /^#define W /;" d file: +WIN_TITLE /home/strajder/src/lav-sdl/lav-sdl.c /^#define WIN_TITLE /;" d file: +WIN_TITLE /home/strajder/src/linije/linije.c /^#define WIN_TITLE /;" d file: +WIN_TITLE /home/strajder/src/linije/linije.c /^#define WIN_TITLE /;" d file: +_M /home/strajder/tmp/pathfind/pf2.c /^static int _M[H][W] = {$/;" v typeref:typename:int[][] file: +__anona07934b70103 /home/strajder/src/lav-sdl/lav-sdl.c /^enum {$/;" g file: +__anona07934b70203 /home/strajder/src/lav-sdl/lav-sdl.c /^enum {$/;" g file: +__anonbf6a67100103 /home/strajder/tmp/pathfind/pf2.c /^enum { CELL_EMPTY, CELL_FULL, CELL_START, CELL_END, CELL_PATH };$/;" g file: +__anonf7ed0ac70103 /home/strajder/src/linije/linije.c /^enum {$/;" g file: +__anonf7ed0ac70203 /home/strajder/src/linije/linije.c /^enum {$/;" g file: +__anonf7ed0ac70303 /home/strajder/src/linije/linije.c /^enum {$/;" g file: +__anonf7ed0ac70403 /home/strajder/src/linije/linije.c /^enum {$/;" g file: +active /home/strajder/src/lav-sdl/lav-sdl.c /^ int active;$/;" m struct:AnimationState typeref:typename:int file: +active /home/strajder/src/linije/linije.c /^ int active;$/;" m struct:AnimationState typeref:typename:int file: +animation /home/strajder/src/lav-sdl/lav-sdl.c /^static struct AnimationState animation;$/;" v typeref:struct:AnimationState file: +animation /home/strajder/src/linije/linije.c /^ struct AnimationState animation;$/;" m struct:State typeref:struct:AnimationState file: +animation /home/strajder/src/linije/linije.c /^static struct AnimationState animation;$/;" v typeref:struct:AnimationState file: +assign_pointFF /home/strajder/src/linije/linije.c /^assign_pointFF(const SDL_FPoint* from, SDL_FPoint* to)$/;" f typeref:typename:void +assign_pointIF /home/strajder/src/lav-sdl/lav-sdl.c /^assign_pointIF(const SDL_Point* from, SDL_FPoint* to)$/;" f typeref:typename:void +assign_pointIF /home/strajder/src/linije/linije.c /^assign_pointIF(const SDL_Point* from, SDL_FPoint* to)$/;" f typeref:typename:void +assign_point_xyIF /home/strajder/src/lav-sdl/lav-sdl.c /^assign_point_xyIF(const int x, const int y, SDL_FPoint* to)$/;" f typeref:typename:void +assign_point_xyIF /home/strajder/src/linije/linije.c /^assign_point_xyIF(const int x, const int y, SDL_FPoint* to)$/;" f typeref:typename:void +background /home/strajder/src/lav-sdl/lav-sdl.c /^static SDL_Texture* background = NULL;$/;" v typeref:typename:SDL_Texture * file: +background /home/strajder/src/linije/linije.c /^ SDL_Texture* background = NULL;$/;" m struct:State typeref:typename:SDL_Texture * file: +background /home/strajder/src/linije/linije.c /^ SDL_Texture* background = NULL;$/;" m struct:State typeref:typename:SDL_Texture * file: +background /home/strajder/src/linije/linije.c /^ SDL_Texture* background = NULL;$/;" m struct:State typeref:typename:SDL_Texture * file: +background /home/strajder/src/linije/linije.c /^ SDL_Texture* background;$/;" m struct:State typeref:typename:SDL_Texture * file: +background /home/strajder/src/linije/linije.c /^static SDL_Texture* background = NULL;$/;" v typeref:typename:SDL_Texture * file: +calculate_delta /home/strajder/src/lav-sdl/lav-sdl.c /^calculate_delta(void)$/;" f typeref:typename:void +calculate_delta /home/strajder/src/linije/linije.c /^calculate_delta(struct State* state)$/;" f typeref:typename:void +calculate_delta /home/strajder/src/linije/linije.c /^calculate_delta(void)$/;" f typeref:typename:void +calculate_display_size /home/strajder/src/linije/linije.c /^calculate_display_size(struct State* state)$/;" f typeref:typename:void +calculate_display_size /home/strajder/src/linije/linije.c /^calculate_display_size(void)$/;" f typeref:typename:void +calculate_grid_origin /home/strajder/src/linije/linije.c /^calculate_grid_origin(const int physical, float* sx, float* sy)$/;" f typeref:typename:void +calculate_grid_origin /home/strajder/src/linije/linije.c /^calculate_grid_origin(const struct State* state, float* sx, float* sy)$/;" f typeref:typename:void +calculate_grid_origin /home/strajder/src/linije/linije.c /^calculate_grid_origin(float* sx, float* sy)$/;" f typeref:typename:void +calculate_grid_origin /home/strajder/src/linije/linije.c /^calculate_grid_origin(struct State* state, float* sx, float* sy)$/;" f typeref:typename:void +calculate_screen_size /home/strajder/src/lav-sdl/lav-sdl.c /^calculate_screen_size(void)$/;" f typeref:typename:void +calculate_screen_size /home/strajder/src/linije/linije.c /^calculate_screen_size(void)$/;" f typeref:typename:void +cell_image /home/strajder/src/linije/linije.c /^static char* cell_image[] = {"[ ]", "[R]", "[B]", "[G]", "[P]", "[O]", "[\/]",$/;" v typeref:typename:char * [] file: +cell_image /home/strajder/src/linije/linije.c /^static char* cell_image[] = {$/;" v typeref:typename:char * [] file: +cell_image /home/strajder/tmp/pathfind/pf2.c /^const char* cell_image[] = {"[ ]", "[@]", "[A]", "[B]", "[.]"};$/;" v typeref:typename:const char * [] +cell_names /home/strajder/src/linije/linije.c /^const char* cell_names[] = {$/;" v typeref:typename:const char * [] +cell_names /home/strajder/src/linije/linije.c /^static char cell_names[][] = {$/;" v typeref:typename:char[][] file: +cell_names /home/strajder/src/linije/linije.c /^static char* cell_names[] = {$/;" v typeref:typename:char * [] file: +cell_names /home/strajder/src/linije/linije.c /^static char** cell_names = {$/;" v typeref:typename:char ** file: +cell_scale_factor /home/strajder/src/linije/linije.c /^ float cell_scale_factor = 2.0f;$/;" m struct:State typeref:typename:float file: +cell_scale_factor /home/strajder/src/linije/linije.c /^ float cell_scale_factor = 2.0f;$/;" m struct:State typeref:typename:float file: +cell_scale_factor /home/strajder/src/linije/linije.c /^ float cell_scale_factor;$/;" m struct:State typeref:typename:float file: +cell_scale_factor /home/strajder/src/linije/linije.c /^static float cell_scale_factor = 2.0f;$/;" v typeref:typename:float file: +cell_scale_factor /home/strajder/src/linije/linije.c /^static float cell_scale_factor = 2.0f;$/;" v typeref:typename:float file: +cells /home/strajder/src/lav-sdl/lav-sdl.c /^ char** cells;$/;" m struct:Labyrinth typeref:typename:char ** file: +cells /home/strajder/src/linije/linije.c /^ char** cells;$/;" m struct:Grid typeref:typename:char ** file: +cells /home/strajder/src/linije/linije.c /^ char** cells;$/;" m struct:Labyrinth typeref:typename:char ** file: +check_five /home/strajder/src/linije/linije.c /^check_five(struct State* state)$/;" f typeref:typename:void +check_five /home/strajder/src/linije/linije.c /^check_five(struct State* state, struct Cell* c)$/;" f typeref:typename:void +check_five /home/strajder/src/linije/linije.c /^check_five(void)$/;" f typeref:typename:void +check_five_deltas /home/strajder/src/linije/linije.c /^const int check_five_deltas[][2] = {$/;" v typeref:typename:const int[][2] +check_five_deltas /home/strajder/src/linije/linije.c /^const int check_five_deltas[][4] = {$/;" v typeref:typename:const int[][4] +cleanup /home/strajder/src/lav-sdl/lav-sdl.c /^cleanup(void)$/;" f typeref:typename:void +cleanup /home/strajder/src/linije/linije.c /^cleanup(struct State* state)$/;" f typeref:typename:void +cleanup /home/strajder/src/linije/linije.c /^cleanup(void)$/;" f typeref:typename:void +color /usr/local/include/SDL3/SDL_render.h /^ SDL_FColor color; \/**< Vertex color *\/$/;" m struct:SDL_Vertex typeref:typename:SDL_FColor +contents /home/strajder/src/linije/linije.c /^ int contents;$/;" m struct:Cell typeref:typename:int file: +coord /home/strajder/src/linije/linije.c /^ SDL_FPoint coord;$/;" m struct:Cell typeref:typename:SDL_FPoint file: +coord /home/strajder/src/linije/linije.c /^ struct Coord coord;$/;" m struct:Cell typeref:struct:Coord file: +coord /home/strajder/tmp/pathfind/pf2.c /^ struct Coord coord;$/;" m struct:Cell typeref:struct:Coord file: +coords /home/strajder/src/linije/linije.c /^ SDL_FPoint coords;$/;" m struct:Cell typeref:typename:SDL_FPoint file: +delta /home/strajder/src/lav-sdl/lav-sdl.c /^ SDL_FPoint delta;$/;" m struct:AnimationState typeref:typename:SDL_FPoint file: +delta /home/strajder/src/linije/linije.c /^ SDL_FPoint delta;$/;" m struct:AnimationState typeref:typename:SDL_FPoint file: +destination /home/strajder/src/lav-sdl/lav-sdl.c /^ SDL_FPoint destination;$/;" m struct:AnimationState typeref:typename:SDL_FPoint file: +destination /home/strajder/src/linije/linije.c /^ SDL_FPoint destination;$/;" m struct:AnimationState typeref:typename:SDL_FPoint file: +destination /home/strajder/src/linije/linije.c /^ SDL_Point destination;$/;" m struct:AnimationState typeref:typename:SDL_Point file: +display_height /home/strajder/src/lav-sdl/lav-sdl.c /^static int display_height = DEFAULT_HEIGHT;$/;" v typeref:typename:int file: +display_height /home/strajder/src/linije/linije.c /^ int display_height = DEFAULT_HEIGHT;$/;" m struct:State typeref:typename:int file: +display_height /home/strajder/src/linije/linije.c /^ int display_height = DEFAULT_HEIGHT;$/;" m struct:State typeref:typename:int file: +display_height /home/strajder/src/linije/linije.c /^ int display_height = DEFAULT_HEIGHT;$/;" m struct:State typeref:typename:int file: +display_height /home/strajder/src/linije/linije.c /^ int display_height;$/;" m struct:State typeref:typename:int file: +display_height /home/strajder/src/linije/linije.c /^static int display_height = DEFAULT_HEIGHT;$/;" v typeref:typename:int file: +display_height /home/strajder/src/linije/linije.c /^static int display_height = DEFAULT_HEIGHT;$/;" v typeref:typename:int file: +display_width /home/strajder/src/lav-sdl/lav-sdl.c /^static int display_width = DEFAULT_WIDTH; \/* Physical, detected *\/$/;" v typeref:typename:int file: +display_width /home/strajder/src/linije/linije.c /^ int display_width = DEFAULT_WIDTH; \/* Physical, detected *\/$/;" m struct:State typeref:typename:int file: +display_width /home/strajder/src/linije/linije.c /^ int display_width = DEFAULT_WIDTH; \/* Physical, detected *\/$/;" m struct:State typeref:typename:int file: +display_width /home/strajder/src/linije/linije.c /^ int display_width = DEFAULT_WIDTH; \/* Physical, detected *\/$/;" m struct:State typeref:typename:int file: +display_width /home/strajder/src/linije/linije.c /^ int display_width; \/* Physical, detected *\/$/;" m struct:State typeref:typename:int file: +display_width /home/strajder/src/linije/linije.c /^static int display_width = DEFAULT_WIDTH; \/* Physical, detected *\/$/;" v typeref:typename:int file: +display_width /home/strajder/src/linije/linije.c /^static int display_width = DEFAULT_WIDTH; \/* Physical, detected *\/$/;" v typeref:typename:int file: +do_exit /home/strajder/src/linije/linije.c /^do_exit(const int code, struct State* state)$/;" f typeref:typename:void +down /home/strajder/src/linije/linije.c /^ struct Cell* down;$/;" m struct:Cell typeref:struct:Cell * file: +down /home/strajder/tmp/pathfind/pf2.c /^ struct Cell* down;$/;" m struct:Cell typeref:struct:Cell * file: +draw /home/strajder/src/lav-sdl/lav-sdl.c /^draw(void)$/;" f typeref:typename:void +draw /home/strajder/src/linije/linije.c /^draw(struct State* state)$/;" f typeref:typename:void +draw /home/strajder/src/linije/linije.c /^draw(void)$/;" f typeref:typename:void +draw_background /home/strajder/src/lav-sdl/lav-sdl.c /^draw_background(SDL_FRect* bg_rect, SDL_FRect* cell_rect, SDL_FRect* dest_rect)$/;" f typeref:typename:void +draw_background /home/strajder/src/linije/linije.c /^draw_background(SDL_FRect* bg_rect)$/;" f typeref:typename:void +draw_background /home/strajder/src/linije/linije.c /^draw_background(SDL_FRect* bg_rect, SDL_FRect* cell_rect, SDL_FRect* dest_rect)$/;" f typeref:typename:void +draw_background /home/strajder/src/linije/linije.c /^draw_background(struct State* state, SDL_FRect* bg_rect)$/;" f typeref:typename:void +draw_background /home/strajder/src/linije/linije.c /^draw_background(void)$/;" f typeref:typename:void +draw_help_dialog /home/strajder/src/lav-sdl/lav-sdl.c /^draw_help_dialog(void)$/;" f typeref:typename:void +draw_help_dialog /home/strajder/src/linije/linije.c /^draw_help_dialog(struct State* state)$/;" f typeref:typename:void +draw_help_dialog /home/strajder/src/linije/linije.c /^draw_help_dialog(void)$/;" f typeref:typename:void +draw_text /home/strajder/src/lav-sdl/lav-sdl.c /^draw_text(const int x, const int y, const int font_width, const int font_height,$/;" f typeref:typename:void +draw_text /home/strajder/src/linije/linije.c /^draw_text(const int x, const int y, const int font_width, const int font_height,$/;" f typeref:typename:void +draw_text /home/strajder/src/linije/linije.c /^draw_text(struct State* state, const int x, const int y, const int font_width, const int font_he/;" f typeref:typename:void +draw_text /home/strajder/src/linije/linije.c /^draw_text(struct State* state, const int x, const int y, const int font_width,$/;" f typeref:typename:void +empty /home/strajder/src/linije/linije.c /^ int empty; \/* logical variables *\/$/;" m struct:Cell typeref:typename:int file: +empty /home/strajder/src/linije/linije.c /^ int empty; \/* logical variables *\/$/;" m struct:Cell typeref:typename:int file: +empty /home/strajder/src/linije/linije.c /^ int empty;$/;" m struct:Cell typeref:typename:int file: +empty /home/strajder/tmp/pathfind/pf2.c /^ int empty;$/;" m struct:Cell typeref:typename:int file: +end /home/strajder/src/lav-sdl/lav-sdl.c /^static SDL_Point hero, start, end;$/;" v typeref:typename:SDL_Point file: +end /home/strajder/src/linije/linije.c /^ SDL_FPoint end;$/;" m struct:AnimationState typeref:typename:SDL_FPoint file: +end /home/strajder/src/linije/linije.c /^ SDL_Point end;$/;" m struct:AnimationState typeref:typename:SDL_Point file: +end /home/strajder/src/linije/linije.c /^static SDL_Point hero, start, end;$/;" v typeref:typename:SDL_Point file: +ending /home/strajder/src/linije/linije.c /^ int ending;$/;" m struct:Cell typeref:typename:int file: +ending /home/strajder/tmp/pathfind/pf2.c /^ int ending;$/;" m struct:Cell typeref:typename:int file: +fill_triplet /home/strajder/src/linije/linije.c /^fill_triplet(struct State* state)$/;" f typeref:typename:void +fill_triplet /home/strajder/src/linije/linije.c /^fill_triplet(void)$/;" f typeref:typename:void +final_step /home/strajder/src/lav-sdl/lav-sdl.c /^ int final_step;$/;" m struct:AnimationState typeref:typename:int file: +final_step /home/strajder/src/linije/linije.c /^ int final_step;$/;" m struct:AnimationState typeref:typename:int file: +find_shortest_path /home/strajder/src/linije/linije.c /^find_shortest_path(struct Cell* c, struct Cell* dist_source, const int dist)$/;" f typeref:typename:void +find_shortest_path /home/strajder/src/linije/linije.c /^find_shortest_path(struct Cell* c, struct Cell* source, const int dist)$/;" f typeref:typename:void +find_shortest_path /home/strajder/tmp/pathfind/pf2.c /^find_shortest_path(struct Cell* c, struct Cell* dist_source, const int dist)$/;" f typeref:typename:void +format /usr/local/include/SDL3/SDL_render.h /^ SDL_PixelFormat format; \/**< The format of the texture, read-only *\/$/;" m struct:SDL_Texture typeref:typename:SDL_PixelFormat +fragment_shader /usr/local/include/SDL3/SDL_render.h /^ SDL_GPUShader *fragment_shader; \/**< The fragment shader to use when this render state is a/;" m struct:SDL_GPURenderStateDesc typeref:typename:SDL_GPUShader * +full_screen /home/strajder/src/linije/linije.c /^ int full_screen = 1;$/;" m struct:State typeref:typename:int file: +full_screen /home/strajder/src/linije/linije.c /^ int full_screen = 1;$/;" m struct:State typeref:typename:int file: +full_screen /home/strajder/src/linije/linije.c /^ int full_screen = 1;$/;" m struct:State typeref:typename:int file: +full_screen /home/strajder/src/linije/linije.c /^ int full_screen;$/;" m struct:State typeref:typename:int file: +full_screen /home/strajder/src/linije/linije.c /^static int full_screen = 1;$/;" v typeref:typename:int file: +full_screen /home/strajder/src/linije/linije.c /^static int full_screen = 0;$/;" v typeref:typename:int file: +full_screen /home/strajder/src/linije/linije.c /^static int full_screen = 1;$/;" v typeref:typename:int file: +get_hero_sprite_xy /home/strajder/src/lav-sdl/lav-sdl.c /^get_hero_sprite_xy(float* x, float* y)$/;" f typeref:typename:void +get_hero_sprite_xy /home/strajder/src/linije/linije.c /^get_hero_sprite_xy(float* x, float* y)$/;" f typeref:typename:void +get_sprite_xy /home/strajder/src/lav-sdl/lav-sdl.c /^get_sprite_xy(const char cell, float* x, float* y)$/;" f typeref:typename:void +get_sprite_xy /home/strajder/src/linije/linije.c /^get_sprite_xy(const char cell, float* x, float* y)$/;" f typeref:typename:void +grid /home/strajder/src/linije/linije.c /^ struct Cell* grid = NULL;$/;" m struct:State typeref:struct:Cell * file: +grid /home/strajder/src/linije/linije.c /^ struct Cell* grid = NULL;$/;" m struct:State typeref:struct:Cell * file: +grid /home/strajder/src/linije/linije.c /^ struct Cell* grid = NULL;$/;" m struct:State typeref:struct:Cell * file: +grid /home/strajder/src/linije/linije.c /^ struct Cell* grid;$/;" m struct:State typeref:struct:Cell * file: +grid /home/strajder/src/linije/linije.c /^static struct Cell* grid = NULL;$/;" v typeref:struct:Cell * file: +grid /home/strajder/src/linije/linije.c /^static struct Cell* grid = NULL;$/;" v typeref:struct:Cell * file: +grid /home/strajder/src/linije/linije.c /^static struct Cell* grid;$/;" v typeref:struct:Cell * file: +grid /home/strajder/src/linije/linije.c /^static struct Grid grid;$/;" v typeref:struct:Grid file: +grid_coord_to_screen_coord /home/strajder/src/linije/linije.c /^grid_coord_to_screen_coord(const int x, const int y, const float startx,$/;" f typeref:typename:void +grid_coord_to_screen_coord /home/strajder/src/linije/linije.c /^grid_coord_to_screen_coord(const struct State* state, const int x, const int y, const float star/;" f typeref:typename:void +grid_coord_to_screen_coord /home/strajder/src/linije/linije.c /^grid_coord_to_screen_coord(const struct State* state, const int x, const int y,$/;" f typeref:typename:void +grid_coord_to_screen_coordF /home/strajder/src/linije/linije.c /^grid_coord_to_screen_coordF(const float x, const float y, const float startx,$/;" f typeref:typename:void +grid_coord_to_screen_coordF /home/strajder/src/linije/linije.c /^grid_coord_to_screen_coordF(const float x, const float y,$/;" f typeref:typename:void +grid_coord_to_screen_coordF /home/strajder/src/linije/linije.c /^grid_coord_to_screen_coordF(const struct State* state, const float x, const float y, const float/;" f typeref:typename:void +grid_coord_to_screen_coordF /home/strajder/src/linije/linije.c /^grid_coord_to_screen_coordF(const struct State* state, const float x,$/;" f typeref:typename:void +h /usr/local/include/SDL3/SDL_render.h /^ int h; \/**< The height of the texture, read-only. *\/$/;" m struct:SDL_Texture typeref:typename:int +handle_click /home/strajder/src/linije/linije.c /^handle_click(struct State* state)$/;" f typeref:typename:void +handle_click /home/strajder/src/linije/linije.c /^handle_click(void)$/;" f typeref:typename:void +handle_event /home/strajder/src/lav-sdl/lav-sdl.c /^handle_event(SDL_Event* event)$/;" f typeref:typename:void +handle_event /home/strajder/src/linije/linije.c /^handle_event(SDL_Event* event)$/;" f typeref:typename:void +handle_event /home/strajder/src/linije/linije.c /^handle_event(struct State* state, SDL_Event* event)$/;" f typeref:typename:void +height /home/strajder/src/lav-sdl/lav-sdl.c /^ int height;$/;" m struct:Labyrinth typeref:typename:int file: +height /home/strajder/src/linije/linije.c /^ int height;$/;" m struct:Grid typeref:typename:int file: +height /home/strajder/src/linije/linije.c /^ int height;$/;" m struct:Labyrinth typeref:typename:int file: +help_shown /home/strajder/src/lav-sdl/lav-sdl.c /^static int help_shown = 0;$/;" v typeref:typename:int file: +help_shown /home/strajder/src/linije/linije.c /^ int help_shown = 0;$/;" m struct:State typeref:typename:int file: +help_shown /home/strajder/src/linije/linije.c /^ int help_shown = 0;$/;" m struct:State typeref:typename:int file: +help_shown /home/strajder/src/linije/linije.c /^ int help_shown = 0;$/;" m struct:State typeref:typename:int file: +help_shown /home/strajder/src/linije/linije.c /^ int help_shown;$/;" m struct:State typeref:typename:int file: +help_shown /home/strajder/src/linije/linije.c /^static int help_shown = 0;$/;" v typeref:typename:int file: +help_shown /home/strajder/src/linije/linije.c /^static int help_shown = 0;$/;" v typeref:typename:int file: +help_text /home/strajder/src/lav-sdl/lav-sdl.c /^const char* help_text[] = {$/;" v typeref:typename:const char * [] +help_text /home/strajder/src/linije/linije.c /^const char* help_text[] = {$/;" v typeref:typename:const char * [] +hero /home/strajder/src/lav-sdl/lav-sdl.c /^static SDL_Point hero, start, end;$/;" v typeref:typename:SDL_Point file: +hero /home/strajder/src/linije/linije.c /^static SDL_Point hero, start, end;$/;" v typeref:typename:SDL_Point file: +init_animation /home/strajder/src/linije/linije.c /^init_animation(struct AnimationState* animation)$/;" f typeref:typename:void +init_cell /home/strajder/src/linije/linije.c /^init_cell(struct Cell* c, const SDL_FPoint* coord)$/;" f typeref:typename:void +init_cell /home/strajder/src/linije/linije.c /^init_cell(struct Cell* c, const SDL_FPoint* coords)$/;" f typeref:typename:void +init_cell /home/strajder/src/linije/linije.c /^init_cell(struct Cell* c, const struct Coord* coord)$/;" f typeref:typename:void +init_state /home/strajder/src/linije/linije.c /^init_state(struct State* state)$/;" f typeref:typename:void +labyrinth /home/strajder/src/lav-sdl/lav-sdl.c /^static struct Labyrinth labyrinth;$/;" v typeref:struct:Labyrinth file: +labyrinth /home/strajder/src/linije/linije.c /^static struct Labyrinth labyrinth;$/;" v typeref:struct:Labyrinth file: +labyrinth_coord_to_screen_coord /home/strajder/src/lav-sdl/lav-sdl.c /^labyrinth_coord_to_screen_coord(const int x, const int y, const float startx,$/;" f typeref:typename:void +labyrinth_coord_to_screen_coord /home/strajder/src/linije/linije.c /^labyrinth_coord_to_screen_coord(const int x, const int y, const float startx,$/;" f typeref:typename:void +labyrinth_coord_to_screen_coordF /home/strajder/src/lav-sdl/lav-sdl.c /^labyrinth_coord_to_screen_coordF(const float x, const float y,$/;" f typeref:typename:void +labyrinth_coord_to_screen_coordF /home/strajder/src/linije/linije.c /^labyrinth_coord_to_screen_coordF(const float x, const float y,$/;" f typeref:typename:void +left /home/strajder/src/linije/linije.c /^ struct Cell* left;$/;" m struct:Cell typeref:struct:Cell * file: +left /home/strajder/tmp/pathfind/pf2.c /^ struct Cell* left;$/;" m struct:Cell typeref:struct:Cell * file: +load_labyrinth /home/strajder/src/lav-sdl/lav-sdl.c /^load_labyrinth(const char* pathname)$/;" f typeref:typename:int +load_labyrinth /home/strajder/src/linije/linije.c /^load_labyrinth(const char* pathname)$/;" f typeref:typename:int +load_textures /home/strajder/src/lav-sdl/lav-sdl.c /^load_textures(void)$/;" f typeref:typename:int +load_textures /home/strajder/src/linije/linije.c /^load_textures(struct State* state)$/;" f typeref:typename:int +load_textures /home/strajder/src/linije/linije.c /^load_textures(void)$/;" f typeref:typename:int +location_pointer /home/strajder/src/lav-sdl/lav-sdl.c /^static int location_pointer = 0;$/;" v typeref:typename:int file: +location_pointer /home/strajder/src/linije/linije.c /^ int location_pointer = 0;$/;" m struct:State typeref:typename:int file: +location_pointer /home/strajder/src/linije/linije.c /^ int location_pointer = 0;$/;" m struct:State typeref:typename:int file: +location_pointer /home/strajder/src/linije/linije.c /^ int location_pointer = 0;$/;" m struct:State typeref:typename:int file: +location_pointer /home/strajder/src/linije/linije.c /^ int location_pointer;$/;" m struct:State typeref:typename:int file: +location_pointer /home/strajder/src/linije/linije.c /^static int location_pointer = 0;$/;" v typeref:typename:int file: +location_pop /home/strajder/src/lav-sdl/lav-sdl.c /^location_pop(SDL_Point* location)$/;" f typeref:typename:int +location_pop /home/strajder/src/linije/linije.c /^location_pop(SDL_Point* location)$/;" f typeref:typename:int +location_pop /home/strajder/src/linije/linije.c /^location_pop(struct State* state, SDL_Point* location)$/;" f typeref:typename:int +location_push /home/strajder/src/lav-sdl/lav-sdl.c /^location_push(const SDL_Point* location)$/;" f typeref:typename:void +location_push /home/strajder/src/linije/linije.c /^location_push(const SDL_Point* location)$/;" f typeref:typename:void +location_push /home/strajder/src/linije/linije.c /^location_push(struct State* state, const SDL_Point* location)$/;" f typeref:typename:void +location_stack /home/strajder/src/lav-sdl/lav-sdl.c /^static SDL_Point* location_stack = NULL;$/;" v typeref:typename:SDL_Point * file: +location_stack /home/strajder/src/linije/linije.c /^ SDL_Point* location_stack = NULL;$/;" m struct:State typeref:typename:SDL_Point * file: +location_stack /home/strajder/src/linije/linije.c /^ SDL_Point* location_stack = NULL;$/;" m struct:State typeref:typename:SDL_Point * file: +location_stack /home/strajder/src/linije/linije.c /^ SDL_Point* location_stack;$/;" m struct:State typeref:typename:SDL_Point * file: +location_stack /home/strajder/src/linije/linije.c /^static SDL_Point* location_stack = NULL;$/;" v typeref:typename:SDL_Point * file: +main /home/strajder/src/lav-sdl/lav-sdl.c /^main(int argc, char** argv)$/;" f typeref:typename:int +main /home/strajder/src/linije/linije.c /^main(int argc, char** argv)$/;" f typeref:typename:int +main /home/strajder/tmp/pathfind/pf2.c /^main(void)$/;" f typeref:typename:int +mark_path /home/strajder/src/linije/linije.c /^mark_path(struct Cell* c)$/;" f typeref:typename:void +mark_path /home/strajder/tmp/pathfind/pf2.c /^mark_path(struct Cell* c)$/;" f typeref:typename:void +mark_path_forward /home/strajder/src/linije/linije.c /^mark_path_forward(struct Cell* c)$/;" f typeref:typename:void +mode /home/strajder/src/linije/linije.c /^ int mode;$/;" m struct:State typeref:typename:int file: +next_step /home/strajder/src/lav-sdl/lav-sdl.c /^next_step(void)$/;" f typeref:typename:void +next_step /home/strajder/src/linije/linije.c /^next_step(struct State* state)$/;" f typeref:typename:void +next_step /home/strajder/src/linije/linije.c /^next_step(void)$/;" f typeref:typename:void +num_sampler_bindings /usr/local/include/SDL3/SDL_render.h /^ Sint32 num_sampler_bindings; \/**< The number of additional fragment samplers to bind whe/;" m struct:SDL_GPURenderStateDesc typeref:typename:Sint32 +num_storage_buffers /usr/local/include/SDL3/SDL_render.h /^ Sint32 num_storage_buffers; \/**< The number of storage buffers to bind when this render /;" m struct:SDL_GPURenderStateDesc typeref:typename:Sint32 +num_storage_textures /usr/local/include/SDL3/SDL_render.h /^ Sint32 num_storage_textures; \/**< The number of storage textures to bind when this rende/;" m struct:SDL_GPURenderStateDesc typeref:typename:Sint32 +passable /home/strajder/src/lav-sdl/lav-sdl.c /^passable(const int x, const int y)$/;" f typeref:typename:int +passable /home/strajder/src/linije/linije.c /^passable(const int x, const int y)$/;" f typeref:typename:int +passable /home/strajder/src/linije/linije.c /^passable(const struct State* state, const int x, const int y)$/;" f typeref:typename:int +path /home/strajder/src/linije/linije.c /^ int path;$/;" m struct:Cell typeref:typename:int file: +path /home/strajder/tmp/pathfind/pf2.c /^ int path;$/;" m struct:Cell typeref:typename:int file: +path_dist /home/strajder/src/linije/linije.c /^ int path_dist; \/* length of shortest path so far *\/$/;" m struct:Cell typeref:typename:int file: +path_dist /home/strajder/src/linije/linije.c /^ int path_dist; \/* length of shortest path so far *\/$/;" m struct:Cell typeref:typename:int file: +path_end /home/strajder/src/linije/linije.c /^ struct Cell* path_end = NULL;$/;" m struct:State typeref:struct:Cell * file: +path_end /home/strajder/src/linije/linije.c /^ struct Cell* path_end = NULL;$/;" m struct:State typeref:struct:Cell * file: +path_end /home/strajder/src/linije/linije.c /^ struct Cell* path_end = NULL;$/;" m struct:State typeref:struct:Cell * file: +path_end /home/strajder/src/linije/linije.c /^ struct Cell* path_end;$/;" m struct:State typeref:struct:Cell * file: +path_end /home/strajder/src/linije/linije.c /^static struct Cell* path_end = NULL;$/;" v typeref:struct:Cell * file: +path_end /home/strajder/src/linije/linije.c /^static struct Cell* path_end = NULL;$/;" v typeref:struct:Cell * file: +path_next /home/strajder/src/linije/linije.c /^ struct Cell* path_next; \/* next cell in shortest path *\/$/;" m struct:Cell typeref:struct:Cell * file: +path_next /home/strajder/src/linije/linije.c /^ struct Cell* path_next; \/* next cell in shortest path *\/$/;" m struct:Cell typeref:struct:Cell * file: +path_source /home/strajder/src/linije/linije.c /^ struct Cell* path_source; \/* previous cell in shortest path *\/$/;" m struct:Cell typeref:struct:Cell * file: +path_start /home/strajder/src/linije/linije.c /^ struct Cell* path_start = NULL;$/;" m struct:State typeref:struct:Cell * file: +path_start /home/strajder/src/linije/linije.c /^ struct Cell* path_start = NULL;$/;" m struct:State typeref:struct:Cell * file: +path_start /home/strajder/src/linije/linije.c /^ struct Cell* path_start;$/;" m struct:State typeref:struct:Cell * file: +path_start /home/strajder/src/linije/linije.c /^static struct Cell* path_start = NULL;$/;" v typeref:struct:Cell * file: +pf_initialize /home/strajder/src/linije/linije.c /^pf_initialize(struct Cell* c, const struct Coord* coord)$/;" f typeref:typename:void +pf_initialize /home/strajder/tmp/pathfind/pf2.c /^pf_initialize(struct Cell* c, const struct Coord* coord)$/;" f typeref:typename:void +pointer /home/strajder/src/lav-sdl/lav-sdl.c /^static SDL_FPoint pointer;$/;" v typeref:typename:SDL_FPoint file: +pointer /home/strajder/src/linije/linije.c /^ SDL_FPoint pointer;$/;" m struct:State typeref:typename:SDL_FPoint file: +pointer /home/strajder/src/linije/linije.c /^ SDL_FPoint pointer;$/;" m struct:State typeref:typename:SDL_FPoint file: +pointer /home/strajder/src/linije/linije.c /^static SDL_FPoint pointer;$/;" v typeref:typename:SDL_FPoint file: +pos /home/strajder/src/linije/linije.c /^ SDL_FPoint pos;$/;" m struct:AnimationState typeref:typename:SDL_FPoint file: +position /home/strajder/src/lav-sdl/lav-sdl.c /^ SDL_FPoint position;$/;" m struct:AnimationState typeref:typename:SDL_FPoint file: +position /home/strajder/src/linije/linije.c /^ SDL_FPoint position;$/;" m struct:AnimationState typeref:typename:SDL_FPoint file: +position /usr/local/include/SDL3/SDL_render.h /^ SDL_FPoint position; \/**< Vertex position, in SDL_Renderer coordinates *\/$/;" m struct:SDL_Vertex typeref:typename:SDL_FPoint +print_cell /home/strajder/tmp/pathfind/pf2.c /^print_cell(const struct Cell* c, const char* name)$/;" f typeref:typename:void +print_coord /home/strajder/tmp/pathfind/pf2.c /^print_coord(const struct Coord* coord)$/;" f typeref:typename:void +print_debug /home/strajder/src/lav-sdl/lav-sdl.c /^print_debug(const char* fmt, ...)$/;" f typeref:typename:void +print_debug /home/strajder/src/linije/linije.c /^print_debug(const char* fmt, ...)$/;" f typeref:typename:void +print_error /home/strajder/src/lav-sdl/lav-sdl.c /^print_error(const char* fmt, ...)$/;" f typeref:typename:void +print_error /home/strajder/src/linije/linije.c /^print_error(const char* fmt, ...)$/;" f typeref:typename:void +print_matrix /home/strajder/src/linije/linije.c /^print_matrix(const struct Cell* M)$/;" f typeref:typename:void +print_matrix /home/strajder/tmp/pathfind/pf2.c /^print_matrix(const struct Cell* M)$/;" f typeref:typename:void +print_path /home/strajder/src/linije/linije.c /^print_path(struct Cell* c)$/;" f typeref:typename:void +redraw /home/strajder/src/lav-sdl/lav-sdl.c /^static int redraw = 1;$/;" v typeref:typename:int file: +redraw /home/strajder/src/linije/linije.c /^ int redraw = 1;$/;" m struct:State typeref:typename:int file: +redraw /home/strajder/src/linije/linije.c /^ int redraw = 1;$/;" m struct:State typeref:typename:int file: +redraw /home/strajder/src/linije/linije.c /^ int redraw = 1;$/;" m struct:State typeref:typename:int file: +redraw /home/strajder/src/linije/linije.c /^ int redraw;$/;" m struct:State typeref:typename:int file: +redraw /home/strajder/src/linije/linije.c /^static int redraw = 1;$/;" v typeref:typename:int file: +redraw /home/strajder/src/linije/linije.c /^static int redraw = 1;$/;" v typeref:typename:int file: +refcount /usr/local/include/SDL3/SDL_render.h /^ int refcount; \/**< Application reference count, used when freeing texture *\/$/;" m struct:SDL_Texture typeref:typename:int +renderer /home/strajder/src/lav-sdl/lav-sdl.c /^static SDL_Renderer* renderer = NULL;$/;" v typeref:typename:SDL_Renderer * file: +renderer /home/strajder/src/linije/linije.c /^ SDL_Renderer* renderer = NULL;$/;" m struct:State typeref:typename:SDL_Renderer * file: +renderer /home/strajder/src/linije/linije.c /^ SDL_Renderer* renderer = NULL;$/;" m struct:State typeref:typename:SDL_Renderer * file: +renderer /home/strajder/src/linije/linije.c /^ SDL_Renderer* renderer = NULL;$/;" m struct:State typeref:typename:SDL_Renderer * file: +renderer /home/strajder/src/linije/linije.c /^ SDL_Renderer* renderer;$/;" m struct:State typeref:typename:SDL_Renderer * file: +renderer /home/strajder/src/linije/linije.c /^static SDL_Renderer* renderer = NULL;$/;" v typeref:typename:SDL_Renderer * file: +renderer /home/strajder/src/linije/linije.c /^static SDL_Renderer* renderer = NULL;$/;" v typeref:typename:SDL_Renderer * file: +reset /home/strajder/src/lav-sdl/lav-sdl.c /^reset(void)$/;" f typeref:typename:void +reset /home/strajder/src/linije/linije.c /^reset(struct State* state)$/;" f typeref:typename:void +reset /home/strajder/src/linije/linije.c /^reset(void)$/;" f typeref:typename:void +reset_path /home/strajder/src/linije/linije.c /^reset_path(struct Cell* c)$/;" f typeref:typename:void +reset_path /home/strajder/src/linije/linije.c /^reset_path(struct Cell* grid)$/;" f typeref:typename:void +reset_path /home/strajder/src/linije/linije.c /^reset_path(struct Cell* tail)$/;" f typeref:typename:void +reset_path /home/strajder/src/linije/linije.c /^reset_path(void)$/;" f typeref:typename:void +right /home/strajder/src/linije/linije.c /^ struct Cell* right;$/;" m struct:Cell typeref:struct:Cell * file: +right /home/strajder/tmp/pathfind/pf2.c /^ struct Cell* right;$/;" m struct:Cell typeref:struct:Cell * file: +running /home/strajder/src/lav-sdl/lav-sdl.c /^static int running = 1;$/;" v typeref:typename:int file: +running /home/strajder/src/linije/linije.c /^ int running = 1;$/;" m struct:State typeref:typename:int file: +running /home/strajder/src/linije/linije.c /^ int running = 1;$/;" m struct:State typeref:typename:int file: +running /home/strajder/src/linije/linije.c /^ int running = 1;$/;" m struct:State typeref:typename:int file: +running /home/strajder/src/linije/linije.c /^ int running;$/;" m struct:State typeref:typename:int file: +running /home/strajder/src/linije/linije.c /^static int running = 1;$/;" v typeref:typename:int file: +running /home/strajder/src/linije/linije.c /^static int running = 1;$/;" v typeref:typename:int file: +sampler_bindings /usr/local/include/SDL3/SDL_render.h /^ const SDL_GPUTextureSamplerBinding *sampler_bindings; \/**< Additional fragment samplers t/;" m struct:SDL_GPURenderStateDesc typeref:typename:const SDL_GPUTextureSamplerBinding * +score /home/strajder/src/linije/linije.c /^ unsigned int score = 0;$/;" m struct:State typeref:typename:unsigned int file: +score /home/strajder/src/linije/linije.c /^ unsigned int score = 0;$/;" m struct:State typeref:typename:unsigned int file: +score /home/strajder/src/linije/linije.c /^ unsigned int score = 0;$/;" m struct:State typeref:typename:unsigned int file: +score /home/strajder/src/linije/linije.c /^ unsigned int score;$/;" m struct:State typeref:typename:unsigned int file: +score /home/strajder/src/linije/linije.c /^static unsigned int score = 0;$/;" v typeref:typename:unsigned int file: +score /home/strajder/src/linije/linije.c /^static unsigned int score = 0;$/;" v typeref:typename:unsigned int file: +score /home/strajder/src/linije/linije.c /^static unsigned int score = 0;$/;" v typeref:typename:unsigned int file: +screen_coord_to_grid_coord /home/strajder/src/linije/linije.c /^screen_coord_to_grid_coord(const int x, const int y, const float startx,$/;" f typeref:typename:void +screen_coord_to_grid_coord /home/strajder/src/linije/linije.c /^screen_coord_to_grid_coord(struct State* state, const int x, const int y, const float startx,$/;" f typeref:typename:void +screen_coord_to_grid_coord /home/strajder/src/linije/linije.c /^screen_coord_to_grid_coord(struct State* state, const int x, const int y,$/;" f typeref:typename:void +screen_coord_to_grid_coordF /home/strajder/src/linije/linije.c /^screen_coord_to_grid_coordF(const float x, const float y, const float startx,$/;" f typeref:typename:void +screen_coord_to_grid_coordF /home/strajder/src/linije/linije.c /^screen_coord_to_grid_coordF(const float x, const float y,$/;" f typeref:typename:void +screen_coord_to_grid_coordF /home/strajder/src/linije/linije.c /^screen_coord_to_grid_coordF(struct State* state, const float x, const float y, const float start/;" f typeref:typename:void +screen_coord_to_grid_coordF /home/strajder/src/linije/linije.c /^screen_coord_to_grid_coordF(struct State* state, const float x, const float y,$/;" f typeref:typename:void +screen_height /home/strajder/src/lav-sdl/lav-sdl.c /^static int screen_height = DEFAULT_HEIGHT;$/;" v typeref:typename:int file: +screen_height /home/strajder/src/linije/linije.c /^ int screen_height = DEFAULT_HEIGHT;$/;" m struct:State typeref:typename:int file: +screen_height /home/strajder/src/linije/linije.c /^ int screen_height = DEFAULT_HEIGHT;$/;" m struct:State typeref:typename:int file: +screen_height /home/strajder/src/linije/linije.c /^ int screen_height = DEFAULT_HEIGHT;$/;" m struct:State typeref:typename:int file: +screen_height /home/strajder/src/linije/linije.c /^ int screen_height;$/;" m struct:State typeref:typename:int file: +screen_height /home/strajder/src/linije/linije.c /^static int screen_height = DEFAULT_HEIGHT;$/;" v typeref:typename:int file: +screen_height /home/strajder/src/linije/linije.c /^static int screen_height = DEFAULT_HEIGHT;$/;" v typeref:typename:int file: +screen_width /home/strajder/src/lav-sdl/lav-sdl.c /^static int screen_width = DEFAULT_WIDTH; \/* Logical *\/$/;" v typeref:typename:int file: +screen_width /home/strajder/src/linije/linije.c /^ int screen_width = DEFAULT_WIDTH; \/* Logical *\/$/;" m struct:State typeref:typename:int file: +screen_width /home/strajder/src/linije/linije.c /^ int screen_width = DEFAULT_WIDTH; \/* Logical *\/$/;" m struct:State typeref:typename:int file: +screen_width /home/strajder/src/linije/linije.c /^ int screen_width = DEFAULT_WIDTH; \/* Logical *\/$/;" m struct:State typeref:typename:int file: +screen_width /home/strajder/src/linije/linije.c /^ int screen_width; \/* Logical *\/$/;" m struct:State typeref:typename:int file: +screen_width /home/strajder/src/linije/linije.c /^static int screen_width = DEFAULT_WIDTH; \/* Logical *\/$/;" v typeref:typename:int file: +screen_width /home/strajder/src/linije/linije.c /^static int screen_width = DEFAULT_WIDTH; \/* Logical *\/$/;" v typeref:typename:int file: +selected /home/strajder/src/linije/linije.c /^static SDL_FPoint selected;$/;" v typeref:typename:SDL_FPoint file: +selected /home/strajder/src/linije/linije.c /^static SDL_Point selected;$/;" v typeref:typename:SDL_Point file: +selection_end /home/strajder/src/linije/linije.c /^ SDL_FPoint selection_start, selection_end;$/;" m struct:State typeref:typename:SDL_FPoint file: +selection_end /home/strajder/src/linije/linije.c /^ SDL_FPoint selection_start, selection_end;$/;" m struct:State typeref:typename:SDL_FPoint file: +selection_end /home/strajder/src/linije/linije.c /^static SDL_FPoint selection_start, selection_end;$/;" v typeref:typename:SDL_FPoint file: +selection_start /home/strajder/src/linije/linije.c /^ SDL_FPoint selection_start, selection_end;$/;" m struct:State typeref:typename:SDL_FPoint file: +selection_start /home/strajder/src/linije/linije.c /^ SDL_FPoint selection_start, selection_end;$/;" m struct:State typeref:typename:SDL_FPoint file: +selection_start /home/strajder/src/linije/linije.c /^static SDL_FPoint selection_start, selection_end;$/;" v typeref:typename:SDL_FPoint file: +short_dist /home/strajder/src/linije/linije.c /^ int short_dist; \/* length of shortest path so far *\/$/;" m struct:Cell typeref:typename:int file: +short_dist /home/strajder/tmp/pathfind/pf2.c /^ int short_dist; \/* length of shortest path so far *\/$/;" m struct:Cell typeref:typename:int file: +short_source /home/strajder/src/linije/linije.c /^ struct Cell* short_source; \/* previous cell in shortest path *\/$/;" m struct:Cell typeref:struct:Cell * file: +short_source /home/strajder/tmp/pathfind/pf2.c /^ struct Cell* short_source; \/* previous cell in shortest path *\/$/;" m struct:Cell typeref:struct:Cell * file: +sprites /home/strajder/src/lav-sdl/lav-sdl.c /^static SDL_Texture* sprites = NULL;$/;" v typeref:typename:SDL_Texture * file: +sprites /home/strajder/src/linije/linije.c /^ SDL_Texture* sprites = NULL;$/;" m struct:State typeref:typename:SDL_Texture * file: +sprites /home/strajder/src/linije/linije.c /^ SDL_Texture* sprites = NULL;$/;" m struct:State typeref:typename:SDL_Texture * file: +sprites /home/strajder/src/linije/linije.c /^ SDL_Texture* sprites = NULL;$/;" m struct:State typeref:typename:SDL_Texture * file: +sprites /home/strajder/src/linije/linije.c /^ SDL_Texture* sprites;$/;" m struct:State typeref:typename:SDL_Texture * file: +sprites /home/strajder/src/linije/linije.c /^static SDL_Texture* sprites = NULL;$/;" v typeref:typename:SDL_Texture * file: +start /home/strajder/src/lav-sdl/lav-sdl.c /^static SDL_Point hero, start, end;$/;" v typeref:typename:SDL_Point file: +start /home/strajder/src/linije/linije.c /^ SDL_FPoint start;$/;" m struct:AnimationState typeref:typename:SDL_FPoint file: +start /home/strajder/src/linije/linije.c /^ SDL_Point start;$/;" m struct:AnimationState typeref:typename:SDL_Point file: +start /home/strajder/src/linije/linije.c /^static SDL_Point hero, start, end;$/;" v typeref:typename:SDL_Point file: +starting /home/strajder/src/linije/linije.c /^ int starting;$/;" m struct:Cell typeref:typename:int file: +starting /home/strajder/tmp/pathfind/pf2.c /^ int starting;$/;" m struct:Cell typeref:typename:int file: +state /home/strajder/src/lav-sdl/lav-sdl.c /^static int state = STATE_SEARCHING_PAUSED;$/;" v typeref:typename:int file: +state /home/strajder/src/linije/linije.c /^ int state = STATE_IDLE;$/;" m struct:State typeref:typename:int file: +state /home/strajder/src/linije/linije.c /^ int state = STATE_IDLE;$/;" m struct:State typeref:typename:int file: +state /home/strajder/src/linije/linije.c /^ int state = STATE_IDLE;$/;" m struct:State typeref:typename:int file: +state /home/strajder/src/linije/linije.c /^ int state;$/;" m struct:State typeref:typename:int file: +state /home/strajder/src/linije/linije.c /^static int state = STATE_IDLE;$/;" v typeref:typename:int file: +state /home/strajder/src/linije/linije.c /^static int state = STATE_SEARCHING_PAUSED;$/;" v typeref:typename:int file: +state_descriptions /home/strajder/src/lav-sdl/lav-sdl.c /^const char* state_descriptions[] = {$/;" v typeref:typename:const char * [] +state_descriptions /home/strajder/src/linije/linije.c /^const char* state_descriptions[] = {$/;" v typeref:typename:const char * [] +step /home/strajder/src/lav-sdl/lav-sdl.c /^ int step;$/;" m struct:AnimationState typeref:typename:int file: +step /home/strajder/src/linije/linije.c /^ int step;$/;" m struct:AnimationState typeref:typename:int file: +step_animation /home/strajder/src/lav-sdl/lav-sdl.c /^step_animation(void)$/;" f typeref:typename:void +step_animation /home/strajder/src/linije/linije.c /^step_animation(struct State* state)$/;" f typeref:typename:void +step_animation /home/strajder/src/linije/linije.c /^step_animation(void)$/;" f typeref:typename:void +storage_buffers /usr/local/include/SDL3/SDL_render.h /^ SDL_GPUBuffer *const *storage_buffers; \/**< Storage buffers to bind when this render s/;" m struct:SDL_GPURenderStateDesc typeref:typename:SDL_GPUBuffer * const * +storage_textures /usr/local/include/SDL3/SDL_render.h /^ SDL_GPUTexture *const *storage_textures; \/**< Storage textures to bind when this render /;" m struct:SDL_GPURenderStateDesc typeref:typename:SDL_GPUTexture * const * +ter12_texture /home/strajder/src/lav-sdl/lav-sdl.c /^static SDL_Texture* ter12_texture = NULL;$/;" v typeref:typename:SDL_Texture * file: +ter12_texture /home/strajder/src/linije/linije.c /^ SDL_Texture* ter12_texture = NULL;$/;" m struct:State typeref:typename:SDL_Texture * file: +ter12_texture /home/strajder/src/linije/linije.c /^ SDL_Texture* ter12_texture = NULL;$/;" m struct:State typeref:typename:SDL_Texture * file: +ter12_texture /home/strajder/src/linije/linije.c /^ SDL_Texture* ter12_texture;$/;" m struct:State typeref:typename:SDL_Texture * file: +ter12_texture /home/strajder/src/linije/linije.c /^static SDL_Texture* ter12_texture = NULL;$/;" v typeref:typename:SDL_Texture * file: +tex_coord /usr/local/include/SDL3/SDL_render.h /^ SDL_FPoint tex_coord; \/**< Normalized texture coordinates, if needed *\/$/;" m struct:SDL_Vertex typeref:typename:SDL_FPoint +text_scale_factor /home/strajder/src/lav-sdl/lav-sdl.c /^static float text_scale_factor = 2.0f;$/;" v typeref:typename:float file: +text_scale_factor /home/strajder/src/linije/linije.c /^ float text_scale_factor = 2.0f;$/;" m struct:State typeref:typename:float file: +text_scale_factor /home/strajder/src/linije/linije.c /^ float text_scale_factor = 2.0f;$/;" m struct:State typeref:typename:float file: +text_scale_factor /home/strajder/src/linije/linije.c /^ float text_scale_factor = 2.0f;$/;" m struct:State typeref:typename:float file: +text_scale_factor /home/strajder/src/linije/linije.c /^ float text_scale_factor;$/;" m struct:State typeref:typename:float file: +text_scale_factor /home/strajder/src/linije/linije.c /^static float text_scale_factor = 2.0f;$/;" v typeref:typename:float file: +try_load /home/strajder/src/lav-sdl/lav-sdl.c /^try_load(const char* filename)$/;" f typeref:typename:SDL_Surface * +try_load /home/strajder/src/linije/linije.c /^try_load(const char* filename)$/;" f typeref:typename:SDL_Surface * +up /home/strajder/src/linije/linije.c /^ struct Cell* up;$/;" m struct:Cell typeref:struct:Cell * file: +up /home/strajder/tmp/pathfind/pf2.c /^ struct Cell* up;$/;" m struct:Cell typeref:struct:Cell * file: +version /usr/local/include/SDL3/SDL_render.h /^ Uint32 version; \/**< the version of this interface *\/$/;" m struct:SDL_GPURenderStateDesc typeref:typename:Uint32 +w /usr/local/include/SDL3/SDL_render.h /^ int w; \/**< The width of the texture, read-only. *\/$/;" m struct:SDL_Texture typeref:typename:int +width /home/strajder/src/lav-sdl/lav-sdl.c /^ int width;$/;" m struct:Labyrinth typeref:typename:int file: +width /home/strajder/src/linije/linije.c /^ int width;$/;" m struct:Grid typeref:typename:int file: +width /home/strajder/src/linije/linije.c /^ int width;$/;" m struct:Labyrinth typeref:typename:int file: +window /home/strajder/src/lav-sdl/lav-sdl.c /^static SDL_Window* window = NULL;$/;" v typeref:typename:SDL_Window * file: +window /home/strajder/src/linije/linije.c /^ SDL_Window* window = NULL;$/;" m struct:State typeref:typename:SDL_Window * file: +window /home/strajder/src/linije/linije.c /^ SDL_Window* window = NULL;$/;" m struct:State typeref:typename:SDL_Window * file: +window /home/strajder/src/linije/linije.c /^ SDL_Window* window = NULL;$/;" m struct:State typeref:typename:SDL_Window * file: +window /home/strajder/src/linije/linije.c /^ SDL_Window* window;$/;" m struct:State typeref:typename:SDL_Window * file: +window /home/strajder/src/linije/linije.c /^static SDL_Window* window = NULL;$/;" v typeref:typename:SDL_Window * file: +x /home/strajder/src/linije/linije.c /^ int x;$/;" m struct:Coord typeref:typename:int file: +x /home/strajder/tmp/pathfind/pf2.c /^ int x;$/;" m struct:Coord typeref:typename:int file: +y /home/strajder/src/linije/linije.c /^ int y;$/;" m struct:Coord typeref:typename:int file: +y /home/strajder/tmp/pathfind/pf2.c /^ int y;$/;" m struct:Coord typeref:typename:int file: diff --git a/ter12.png b/ter12.png Бинарне датотеке се разликују. diff --git a/ter12.xcf.xz b/ter12.xcf.xz Бинарне датотеке се разликују. diff --git a/version b/version @@ -0,0 +1 @@ +0.1 diff --git a/version.h.in b/version.h.in @@ -0,0 +1,7 @@ +/* This program is licensed under the terms of GNU GPL v3 or (at your option) + * any later version. Copyright (C) 2025 Страхиња Радић. + * See the file LICENSE for exact copyright and license details. */ + +#define PROGRAM_NAME "linije" +#define DATE "%DATE%" +#define VERSION "%VERSION%"