Browse Source

Inline simple accessor functions

1.0.0
Georg Hopp 10 years ago
parent
commit
b9502cd90c
  1. 17
      include/tr/interface/hashable.h
  2. 35
      include/tr/interface/iterable.h
  3. 17
      src/hash/interface/hashable.c
  4. 31
      src/interface/iterable.c

17
include/tr/interface/hashable.h

@ -34,8 +34,21 @@ TR_INTERFACE(TR_Hashable) {
fptr_TR_hashableHandleDouble handleDouble;
};
extern unsigned long TR_hashableGetHash(void *);
extern void TR_hashableHandleDouble(void *, void *);
inline
unsigned long
TR_hashableGetHash(void * hashable)
{
unsigned long ret;
TR_RETCALL(hashable, TR_Hashable, getHash, ret);
return ret;
}
inline
void
TR_hashableHandleDouble(void * hashable, void * new_hashable)
{
TR_CALL(hashable, TR_Hashable, handleDouble, new_hashable);
}
#endif // __TR_INTERFACE_HASHABLE_H__

35
include/tr/interface/iterable.h

@ -42,10 +42,37 @@ TR_INTERFACE(TR_Iterable) {
TR_iterableRewind((this)); \
for (; TR_iterableValid((this)); TR_iterableNext((this)))
extern void * TR_iterableCurrent(void *);
extern void TR_iterableNext(void *);
extern void TR_iterableRewind(void *);
extern int TR_iterableValid(void *);
inline
void *
TR_iterableCurrent(void * iterable)
{
void * ret;
TR_RETCALL(iterable, TR_Iterable, current, ret);
return ret;
}
inline
void
TR_iterableNext(void * iterable)
{
TR_CALL(iterable, TR_Iterable, next);
}
inline
void
TR_iterableRewind(void * iterable)
{
TR_CALL(iterable, TR_Iterable, rewind);
}
inline
int
TR_iterableValid(void * iterable)
{
int ret;
TR_RETCALL(iterable, TR_Iterable, valid, ret);
return ret;
}
#endif // __TR_INTERFACE_ITERABLE_H__

17
src/hash/interface/hashable.c

@ -29,20 +29,7 @@
TR_CREATE_INTERFACE(TR_Hashable, 2);
unsigned long
TR_hashableGetHash(void * hashable)
{
unsigned long ret;
TR_RETCALL(hashable, TR_Hashable, getHash, ret);
return ret;
}
void
TR_hashableHandleDouble(void * hashable, void * new_hashable)
{
TR_CALL(hashable, TR_Hashable, handleDouble, new_hashable);
}
extern inline unsigned long TR_hashableGetHash(void *);
extern inline void TR_hashableHandleDouble(void *, void *);
// vim: set ts=4 sw=4:

31
src/interface/iterable.c

@ -25,32 +25,9 @@
TR_CREATE_INTERFACE(TR_Iterable, 4);
void *
TR_iterableCurrent(void * iterable)
{
void * ret;
TR_RETCALL(iterable, TR_Iterable, current, ret);
return ret;
}
void
TR_iterableNext(void * iterable)
{
TR_CALL(iterable, TR_Iterable, next);
}
void
TR_iterableRewind(void * iterable)
{
TR_CALL(iterable, TR_Iterable, rewind);
}
int
TR_iterableValid(void * iterable)
{
int ret;
TR_RETCALL(iterable, TR_Iterable, valid, ret);
return ret;
}
extern inline void * TR_iterableCurrent(void *);
extern inline void TR_iterableNext(void *);
extern inline void TR_iterableRewind(void *);
extern inline int TR_iterableValid(void *);
// vim: set ts=4 sw=4:
Loading…
Cancel
Save