[ekg2-devel] windows.h na bitpolach, podejście drugie
Michał Górny
mgorny.hejl w mailnull.com
Pią, 29 Lut 2008, 17:01:04 CET
PrzejrzeÄ, wypowiedzieÄÂ siÄ. Ostro psuje ABI, starajÄ
c siÄ
zminimalizowaÄ marnowanÄ
pamiÄÄ. Obok przepisania czÄĹci ficzerĂłw
na bitpola, zwÄĹźyĹem do poĹowy (16b) wymiary ekranu, nieco przestawiĹem
pola (by bitpola coĹ daĹy) i zmieniĹem ostatniÄ
modyfikacjÄ na time_t
[Ĺźeby samego zysku nie byĹo ( ;]. W sumie myĹlaĹem jeszcze, Ĺźeby id
zamieniÄ na shorta (albo nawet chara, bo toto dĹugie byÄ nie moĹźe).
Tak swojÄ
drogÄ
, skoro korzystamy z C99, to nie powinniĹmy z boola
korzystaÄ?
--
Z powaĹźaniem,
MichaĹ GĂłrny
<http://mailnull.com/w?au=f6744c6f5e097cc9816a562802f331c2>
<xmpp:mgorny w jabster.pl>
-------------- następna część ---------
Index: ekg/windows.c
===================================================================
--- ekg/windows.c (wersja 3825)
+++ ekg/windows.c (kopia robocza)
@@ -596,7 +596,7 @@
if (w->id) {
if (w->target) {
- if (!w->floating)
+ if (!w->floating)
printq("window_list_query", itoa(w->id), w->target);
else
printq("window_list_floating", itoa(w->id), itoa(w->left), itoa(w->top), itoa(w->width), itoa(w->height), w->target);
Index: ekg/windows.h
===================================================================
--- ekg/windows.h (wersja 3825)
+++ ekg/windows.h (kopia robocza)
@@ -34,23 +34,23 @@
#endif
typedef struct {
- void *w; /* window, if NULL it means current */
- int casense; /* 0 - ignore case; 1 - don't ignore case, -1 - use global variable */
- int lock; /* if 0, don't update */
- int isregex; /* 1 - in target regexp */
+ void *w; /* window, if NULL it means current */
+ int casense : 2; /* 0 - ignore case; 1 - don't ignore case, -1 - use global variable */
+ unsigned int lock : 1; /* if 0, don't update */
+ unsigned int isregex : 1; /* 1 - in target regexp */
#ifdef HAVE_REGEX_H
- regex_t reg; /* regexp compilated expression */
+ regex_t reg; /* regexp compilated expression */
#endif
- char *expression; /* expression */
+ char *expression; /* expression */
} window_lastlog_t;
typedef struct {
- int id; /* numer okna */
- char *target; /* nick query albo inna nazwa albo NULL */
- session_t *session; /* której sesji dotyczy okno */
+ int id; /* numer okna */
+ char *target; /* nick query albo inna nazwa albo NULL */
+ session_t *session; /* której sesji dotyczy okno */
- int left, top; /* pozycja (x, y) względem początku ekranu */
- int width, height; /* wymiary okna */
+ short unsigned int left, top; /* pozycja (x, y) względem początku ekranu */
+ short unsigned int width, height; /* wymiary okna */
unsigned int act : 2; /* activity: 1 - status/junk; 2 - msg */
unsigned int in_typing : 1; /* user is composing a message to us */
@@ -58,21 +58,23 @@
so we can start sending composing to him/her */
unsigned int out_active : 1; /* we 'started' sending messages to user (considered
ourselves active), so we shall say goodbye when done */
- int more; /* pojawiło się coś poza ekranem */
+ unsigned int more : 1; /* pojawiło się coś poza ekranem */
+ unsigned int floating : 1; /* czy pływające? */
+ unsigned int doodle : 1; /* czy do gryzmolenia? [we don't set it anywhere] */
- int floating; /* czy pływające? */
- int doodle; /* czy do gryzmolenia? */
- int frames; /* informacje o ramkach */
- int edge; /* okienko brzegowe */
- int last_update; /* czas ostatniego uaktualnienia */
- int nowrap; /* nie zawijamy linii */
- int hide; /* ukrywamy, bo jest zbyt duże */
- int lock; /* blokowanie zmian w obrębie komendy */
+ unsigned int frames : 4; /* informacje o ramkach */
+ unsigned int edge : 4; /* okienko brzegowe */
- list_t userlist; /* sometimes window may require separate userlist */
+ unsigned int nowrap : 1; /* nie zawijamy linii */
+ unsigned int hide : 1; /* ukrywamy, bo jest zbyt duże */
+ time_t last_update; /* czas ostatniego uaktualnienia */
+ int lock; /* blokowanie zmian w obrębie komendy */
+
+ list_t userlist; /* sometimes window may require separate userlist */
+
window_lastlog_t *lastlog; /* prywatne informacje lastloga */
- void *private; /* prywatne informacje ui */
+ void *private; /* prywatne informacje ui */
} window_t;
#ifndef EKG2_WIN32_NOFUNCTION
Więcej informacji o liście dyskusyjnej ekg2-devel