X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=src%2Fcommon%2Fintstack.h;h=f3fbf081b37c98e897c0b45165dccf8a84ee931e;hb=9d2538f12b2f26226c030cc3077e6aba668afb64;hp=a03be9b2c681c2538e1278526d2c661909f5b479;hpb=9d439d9dd21e7d16d4b31c81e05cbe1a4066fd35;p=cc65 diff --git a/src/common/intstack.h b/src/common/intstack.h index a03be9b2c..f3fbf081b 100644 --- a/src/common/intstack.h +++ b/src/common/intstack.h @@ -6,10 +6,10 @@ /* */ /* */ /* */ -/* (C) 2004 Ullrich von Bassewitz */ -/* Römerstraße 52 */ -/* D-70794 Filderstadt */ -/* EMail: uz@cc65.org */ +/* (C) 2004-2010, Ullrich von Bassewitz */ +/* Roemerstrasse 52 */ +/* D-70794 Filderstadt */ +/* EMail: uz@cc65.org */ /* */ /* */ /* This software is provided 'as-is', without any expressed or implied */ @@ -54,6 +54,9 @@ struct IntStack { long Stack[8]; }; +/* An initializer for an empty int stack */ +#define STATIC_INTSTACK_INITIALIZER { 0, { 0, 0, 0, 0, 0, 0, 0, 0 } } + /* Declare an int stack with the given value as first element */ #define INTSTACK(Val) { 1, { Val, 0, 0, 0, 0, 0, 0, 0 } } @@ -75,6 +78,16 @@ INLINE int IS_IsFull (const IntStack* S) # define IS_IsFull(S) ((S)->Count >= sizeof ((S)->Stack) / sizeof ((S)->Stack[0])) #endif +#if defined(HAVE_INLINE) +INLINE int IS_IsEmpty (const IntStack* S) +/* Return true if there are no values on the given int stack */ +{ + return (S->Count == 0); +} +#else +# define IS_IsEmpty(S) ((S)->Count == 0) +#endif + #if defined(HAVE_INLINE) INLINE unsigned IS_GetCount (const IntStack* S) /* Return the number of elements on the given int stack */ @@ -97,6 +110,9 @@ void IS_Drop (IntStack* S); void IS_Push (IntStack* S, long Val); /* Push a value onto an int stack */ +long IS_Pop (IntStack* S); +/* Pop a value from an int stack */ + /* End of intstack.h */