From fc78431d48cc58e3c839da6a4509fe6a03a3c87f Mon Sep 17 00:00:00 2001 From: xolatile Date: Sat, 7 Oct 2023 08:59:33 -0400 Subject: [PATCH] New stuff, compilation script and examples... --- README.md | 20 +++++++++++++++++++- compile.sh | 2 +- example/compile.sh | 14 ++++++++++++++ example/view | Bin 0 -> 49856 bytes example/view.c | 37 +++++++++++++++++++++++++++++++++++++ example/view.log | 15 +++++++++++++++ example/view.o | Bin 0 -> 50216 bytes 7 files changed, 86 insertions(+), 2 deletions(-) create mode 100644 example/compile.sh create mode 100755 example/view create mode 100644 example/view.c create mode 100644 example/view.log create mode 100644 example/view.o diff --git a/README.md b/README.md index 8feb0f0..d38edcf 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,21 @@ # xurses -Xurses... \ No newline at end of file +xurses -- Library for creation of simple programs in terminal. + +- Everything related to my libraries is clean of all warning options on Clang, GCC and Valgrind. +- I don't know what else to write here, program is being done in my free time, so expect more... + +Compile: +```bash +$ sh compile.sh +``` + +Install: +```bash +$ sudo sh install.sh +``` + +Testing: +```bash +$ sh example/testing.sh +``` diff --git a/compile.sh b/compile.sh index c041afa..2c440f9 100644 --- a/compile.sh +++ b/compile.sh @@ -2,6 +2,6 @@ set -xe -gcc -g -ansi -Wall -Wextra -Wpedantic -Werror -c -o xurses.o xurses.c +gcc -g -ansi -Wall -Wextra -Wpedantic -Werror -Ofast -c -o xurses.o xurses.c exit diff --git a/example/compile.sh b/example/compile.sh new file mode 100644 index 0000000..d0ffc31 --- /dev/null +++ b/example/compile.sh @@ -0,0 +1,14 @@ +#!/bin/bash + +set -xe + +#~gcc -g -ansi -Wall -Wextra -Wpedantic -Werror -o ./example/view ./example/view.c /usr/include/xolatile/xurses.o +gcc -g -ansi -Wall -Wextra -Wpedantic -Werror -o ./example/view ./example/view.c +#~gcc -g -ansi -Wall -Wextra -Wpedantic -Werror -c -o ./example/view.o ./example/view.c +#~gcc -o ./example/view ./example/view.o /usr/include/xolatile/xurses.o + +valgrind --show-leak-kinds=all --leak-check=full --log-file=./example/view.log ./example/view + +xighlight -V < ./example/view.log + +exit diff --git a/example/view b/example/view new file mode 100755 index 0000000000000000000000000000000000000000..ad1b8de610a14971860f108a69b3b4c08cbf9f92 GIT binary patch literal 49856 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%0A~O#cXXZ~3R*!|%h>|3ZMB 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 E0r0qlQUCw| literal 0 HcmV?d00001 diff --git a/example/view.c b/example/view.c new file mode 100644 index 0000000..f8a889a --- /dev/null +++ b/example/view.c @@ -0,0 +1,37 @@ +#include +#include + +static int i_x = 0; +static int i_y = 0; + +static void i_up (void) { --i_y; limit (& i_y, 0, curses_screen_height - 1); } +static void i_down (void) { ++i_y; limit (& i_y, 0, curses_screen_height - 1); } +static void i_left (void) { --i_x; limit (& i_x, 0, curses_screen_width - 1); } +static void i_right (void) { ++i_x; limit (& i_x, 0, curses_screen_width - 1); } + +int main (void) { + curses_configure (); + + curses_bind (SIGNAL_W, i_up); + curses_bind (SIGNAL_S, i_down); + curses_bind (SIGNAL_A, i_left); + curses_bind (SIGNAL_D, i_right); + + while (curses_active != 0) { + curses_render_background ('.', COLOUR_GREY, EFFECT_BOLD); + + curses_render_character ('A', COLOUR_GREEN, EFFECT_NORMAL, 0, 1); + curses_render_character ('B', COLOUR_YELLOW, EFFECT_REVERSE, 0, 2); + curses_render_character ('C', COLOUR_WHITE, EFFECT_BLINK, 1, 0); + curses_render_character ('D', COLOUR_BLUE, EFFECT_ITALIC, 2, 0); + + curses_render_string ("Heyo world!", COLOUR_RED, EFFECT_BOLD, 3, 0); + curses_render_string ("Heyo world!", COLOUR_PINK, EFFECT_BOLD, 168, 0); + + curses_render_character ('@', COLOUR_CYAN, EFFECT_ITALIC, i_x, i_y); + + curses_synchronize (); + } + + return (EXIT_SUCCESS); +} diff --git a/example/view.log b/example/view.log new file mode 100644 index 0000000..2ddaf6b --- /dev/null +++ b/example/view.log @@ -0,0 +1,15 @@ +==29652== Memcheck, a memory error detector +==29652== Copyright (C) 2002-2017, and GNU GPL'd, by Julian Seward et al. +==29652== Using Valgrind-3.14.0 and LibVEX; rerun with -h for copyright info +==29652== Command: ./example/view +==29652== Parent PID: 29646 +==29652== +==29652== +==29652== HEAP SUMMARY: +==29652== in use at exit: 0 bytes in 0 blocks +==29652== total heap usage: 1 allocs, 1 frees, 88,766 bytes allocated +==29652== +==29652== All heap blocks were freed -- no leaks are possible +==29652== +==29652== For counts of detected and suppressed errors, rerun with: -v +==29652== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0) diff --git a/example/view.o b/example/view.o new file mode 100644 index 0000000000000000000000000000000000000000..22e79a478a2d53f114dee522e05fd7c6b4788be8 GIT binary patch literal 50216 zcmdsg3wTx4weH$`XNH6T;VsB(^9F?^Jmn1mHf$g~+{I9)?=+b1+}e5saOk&3hJrcsz|N9r4}s+J*C#R@s!p(#++lUHP*~tfW5uve&1bu z?6uZE$Na~bV?NiMbFJJME1DG!g&aOY&J@SHW7Kg@yy#s|)0fknE>34>S-k0^c;o5z z@urQ_AZY$ZrtPKZhi&C8#lh- zR*y-&(!;tK!84DfVz6byv zx#hhN1@O}Z3FS)mt+kgbp|K}D#^7FKX7bXUCbKz!vjK7YrJ zK9emicqtWRo0V0%1SET#sN{o}@XoUYbh_Cag-kdRZ%Q3|Eq3+`I3W57C)Exj9CJ;a z3*a#)IUT?gFHX0;;e1JsjdttnkqM{+lR zxnaQie`6*Fof<3ayjQrs9HmL8P6&HQTk9&O)SThe;nJ-vrU1oX)71-Q(p_oB zlfQ*fQ+FEog-m^<>Zl{sw>q$ zEXq{h8)Iifme%pHv#BF)!?3+g*bd*Hd*@87QWDpEkbP&|h@r!5XzYyZz4lxXUWQpf@2>1%f>TJhi}=J8tB~vocmPl4Ax6o|0$C88k8ey&)j~% zs&kF8&q7#YpiVA=wCD)A&pMm;rEaxhXctkyqyk&`A>6t^8-Emv%!#yp5Cj|x3OJfJ zz%C9ti??@v1zklYp+!NUto|nmK^mdSG$j~Z%=z0^YcD+%-~a1KyzyjKe0$HANgAx1 z8r|}=bd_l;PWJzQr}_!6idp_`PtIsV)e!UdAQn@v)Ir`(PM2m= zvM2YJJOB2@7v#x_vD3M?)Wf|y0KvAY+iS7YSdvfGxumE4#f6&a`2d?r4HcT}y{^$z zbiQ1)#@K1M7@bZvl5&q%lYSW#D{41UQL)W!N*$L2y0l&2vg6p0>CDj`tsWLZ_Xp#k zFVaSco%Q-B7&DzijvL43v_yMwpy{K+;aAhL<{(CBTh65I2ZEkr@ydJ`ZiIBjZD6B8<@_9OP!u z&KeJFf>N}_d+55$yM%FoDWXlWN4(1?yi4&gx5q=z|6J$E9`i0wP_j>{cw=k}^tG`q zF!-31mpa1%gG{rtb?Ga2VW_XQNh%0Dm5c2FB)U!N9e>e_VpXAf0v!n!OBi?QA?vvY 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