AtomicT_int* createAtomicT_intImpl_int(struct Context* context,int init) { struct AtomicT_int* atomicT_int = &ALLOCATE(context, AtomicT_int)->AtomicT_int; struct AtomicT_intImpl_int* atomic_t_impl = &ALLOCATE(context, AtomicT_intImpl_int)->AtomicT_intImpl_int; atomicT_int->atomicT_int = (union Data*)atomic_t_impl; atomicT_int->checkAndSet = C_checkAndSet_AtomicT_intImpl; atomicT_int->set = C_set_AtomicT_intImpl; atomic_t_impl->atomic = init; atomic_t_impl->init = init; return atomicT_int; } __code checkAndSet_AtomicT_intImpl(struct Context *context,struct AtomicT_intImpl_int* atomicT_int, int oldData, int newData, enum Code next, enum Code fail) { if (__sync_bool_compare_and_swap(&atomicT_int->atomic, oldData, newData)) { goto meta(context, next); } goto meta(context, fail); }