changed memxxx() macros to use HAVE___BUILTIN_MEMXXX autoconf variables.
started adding the #final modifier for class definition
This commit is contained in:
parent
2a6206cc80
commit
275f5810cc
@ -51,7 +51,8 @@
|
|||||||
enum class_mod_t
|
enum class_mod_t
|
||||||
{
|
{
|
||||||
CLASS_INDEXED = (1 << 0),
|
CLASS_INDEXED = (1 << 0),
|
||||||
CLASS_LIMITED = (1 << 1)
|
CLASS_LIMITED = (1 << 1),
|
||||||
|
CLASS_FINAL = (1 << 2)
|
||||||
};
|
};
|
||||||
|
|
||||||
enum var_type_t
|
enum var_type_t
|
||||||
@ -102,6 +103,7 @@ static struct voca_t
|
|||||||
{ 9, { 'e','x','c','e','p','t','i','o','n' } },
|
{ 9, { 'e','x','c','e','p','t','i','o','n' } },
|
||||||
{ 6, { 'e','x','t','e','n','d' } },
|
{ 6, { 'e','x','t','e','n','d' } },
|
||||||
{ 5, { 'f','a','l','s','e' } },
|
{ 5, { 'f','a','l','s','e' } },
|
||||||
|
{ 6, { '#','f','i','n','a','l' } },
|
||||||
{ 4, { 'f','r','o','m' } },
|
{ 4, { 'f','r','o','m' } },
|
||||||
{ 9, { '#','h','a','l','f','w','o','r','d' } },
|
{ 9, { '#','h','a','l','f','w','o','r','d' } },
|
||||||
{ 2, { 'i','f' } },
|
{ 2, { 'i','f' } },
|
||||||
@ -159,6 +161,7 @@ enum voca_id_t
|
|||||||
VOCA_EXCEPTION,
|
VOCA_EXCEPTION,
|
||||||
VOCA_EXTEND,
|
VOCA_EXTEND,
|
||||||
VOCA_FALSE,
|
VOCA_FALSE,
|
||||||
|
VOCA_FINAL_S,
|
||||||
VOCA_FROM,
|
VOCA_FROM,
|
||||||
VOCA_HALFWORD_S,
|
VOCA_HALFWORD_S,
|
||||||
VOCA_IF,
|
VOCA_IF,
|
||||||
@ -6630,6 +6633,16 @@ static int __compile_class_definition (moo_t* moo, int extend)
|
|||||||
if (_set_class_indexed_type (moo, MOO_OBJ_TYPE_LIWORD) <= -1) return -1;
|
if (_set_class_indexed_type (moo, MOO_OBJ_TYPE_LIWORD) <= -1) return -1;
|
||||||
GET_TOKEN (moo);
|
GET_TOKEN (moo);
|
||||||
}
|
}
|
||||||
|
else if (is_token_symbol(moo, VOCA_FINAL_S))
|
||||||
|
{
|
||||||
|
if (moo->c->cls.flags & CLASS_FINAL)
|
||||||
|
{
|
||||||
|
set_syntax_error (moo, MOO_SYNERR_MODIFIERDUPL, TOKEN_LOC(moo), TOKEN_NAME(moo));
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
moo->c->cls.flags |= CLASS_FINAL;
|
||||||
|
GET_TOKEN(moo);
|
||||||
|
}
|
||||||
else if (is_token_symbol(moo, VOCA_LIMITED_S))
|
else if (is_token_symbol(moo, VOCA_LIMITED_S))
|
||||||
{
|
{
|
||||||
if (moo->c->cls.flags & CLASS_LIMITED)
|
if (moo->c->cls.flags & CLASS_LIMITED)
|
||||||
|
@ -89,18 +89,28 @@
|
|||||||
# else
|
# else
|
||||||
# define MOO_MEMCMP(dst,src,size) memcmp(dst,src,size)
|
# define MOO_MEMCMP(dst,src,size) memcmp(dst,src,size)
|
||||||
# endif
|
# endif
|
||||||
#elif defined(__GNUC__) && (__GNUC__ >= 3 || (defined(__GNUC_MINOR) && __GNUC__ == 2 && __GNUC_MINOR__ >= 91))
|
#else
|
||||||
/* gcc 2.91 or higher */
|
# if defined(HAVE___BUILTIN_MEMSET)
|
||||||
# define MOO_MEMSET(dst,src,size) __builtin_memset(dst,src,size)
|
# define MOO_MEMSET(dst,src,size) __builtin_memset(dst,src,size)
|
||||||
# define MOO_MEMCPY(dst,src,size) __builtin_memcpy(dst,src,size)
|
|
||||||
# define MOO_MEMMOVE(dst,src,size) __builtin_memmove(dst,src,size)
|
|
||||||
# define MOO_MEMCMP(dst,src,size) __builtin_memcmp(dst,src,size)
|
|
||||||
# else
|
# else
|
||||||
# define MOO_MEMSET(dst,src,size) memset(dst,src,size)
|
# define MOO_MEMSET(dst,src,size) memset(dst,src,size)
|
||||||
|
# endif
|
||||||
|
# if defined(HAVE___BUILTIN_MEMCPY)
|
||||||
|
# define MOO_MEMCPY(dst,src,size) __builtin_memcpy(dst,src,size)
|
||||||
|
# else
|
||||||
# define MOO_MEMCPY(dst,src,size) memcpy(dst,src,size)
|
# define MOO_MEMCPY(dst,src,size) memcpy(dst,src,size)
|
||||||
|
# endif
|
||||||
|
# if defined(HAVE___BUILTIN_MEMMOVE)
|
||||||
|
# define MOO_MEMMOVE(dst,src,size) __builtin_memmove(dst,src,size)
|
||||||
|
# else
|
||||||
# define MOO_MEMMOVE(dst,src,size) memmove(dst,src,size)
|
# define MOO_MEMMOVE(dst,src,size) memmove(dst,src,size)
|
||||||
|
# endif
|
||||||
|
# if defined(HAVE___BUILTIN_MEMCMP)
|
||||||
|
# define MOO_MEMCMP(dst,src,size) __builtin_memcmp(dst,src,size)
|
||||||
|
# else
|
||||||
# define MOO_MEMCMP(dst,src,size) memcmp(dst,src,size)
|
# define MOO_MEMCMP(dst,src,size) memcmp(dst,src,size)
|
||||||
# endif
|
# endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
/* ========================================================================= */
|
/* ========================================================================= */
|
||||||
|
Loading…
Reference in New Issue
Block a user