ÊÊÅäÆ÷ģʽCÓïÑÔʵÏÖ(Ò»)

2013-07-22 17:55:55 ¡¤ ×÷Õß: ¡¤ ä¯ÀÀ: 254

¡¡¡¡¡¾´úÂëÇåµ¥¡¿

¡¡¡¡typedef.h

¡¡¡¡[html]

¡¡¡¡#ifndef __TYPEDEF_H__

¡¡¡¡#define __TYPEDEF_H__

¡¡¡¡#include <stdio.h>

¡¡¡¡#include <stdlib.h>

¡¡¡¡#ifdef __cplusplus

¡¡¡¡extern "C" {

¡¡¡¡#endif

¡¡¡¡typedef enum _Ret

¡¡¡¡{

¡¡¡¡RET_OK,

¡¡¡¡RET_FAIL

¡¡¡¡}Ret;

¡¡¡¡#define return_if_fail(p)\

¡¡¡¡if(!(p)){\

¡¡¡¡printf("%s:%d Warning:"#p"Failed\n",__func__,__LINE__);\

¡¡¡¡return;}

¡¡¡¡#define return_val_if_fail(p, ret)\

¡¡¡¡if(!(p)){\

¡¡¡¡printf("%s:%d Warning:"#p"Failed\n",__func__,__LINE__);\

¡¡¡¡return (ret);}

¡¡¡¡#define SAFE_FREE(p) if(p != NULL){free(p); p = NULL;}

¡¡¡¡#ifdef __cplusplus

¡¡¡¡}

¡¡¡¡#endif

¡¡¡¡#endif

¡¡¡¡#ifndef __TYPEDEF_H__

¡¡¡¡#define __TYPEDEF_H__

¡¡¡¡#include <stdio.h>

¡¡¡¡#include <stdlib.h>

¡¡¡¡#ifdef __cplusplus

¡¡¡¡extern "C" {

¡¡¡¡#endif

¡¡¡¡typedef enum _Ret

¡¡¡¡{

¡¡¡¡RET_OK,

¡¡¡¡RET_FAIL

¡¡¡¡}Ret;

¡¡¡¡#define return_if_fail(p)\

¡¡¡¡if(!(p)){\

¡¡¡¡printf("%s:%d Warning:"#p"Failed\n",__func__,__LINE__);\

¡¡¡¡return;}

¡¡¡¡#define return_val_if_fail(p, ret)\

¡¡¡¡if(!(p)){\

¡¡¡¡printf("%s:%d Warning:"#p"Failed\n",__func__,__LINE__);\

¡¡¡¡return (ret);}

¡¡¡¡#define SAFE_FREE(p) if(p != NULL){free(p); p = NULL;}

¡¡¡¡#ifdef __cplusplus

¡¡¡¡}

¡¡¡¡#endif

¡¡¡¡#endif

¡¡¡¡player.h

¡¡¡¡[html]

¡¡¡¡#ifndef __PLAYER_H__

¡¡¡¡#define __PLAYER_H__

¡¡¡¡#include "typedef.h"

¡¡¡¡#ifdef __cplusplus

¡¡¡¡extern "C" {

¡¡¡¡#endif

¡¡¡¡struct _Player;

¡¡¡¡typedef struct _Player Player;

¡¡¡¡struct _Player

¡¡¡¡{

¡¡¡¡char *name;

¡¡¡¡void (*attack)(void *player);

¡¡¡¡void (*defend)(void *player);

¡¡¡¡void (*destroy)(void *player);

¡¡¡¡};

¡¡¡¡static inline void player_attack(Player *thiz)

¡¡¡¡{

¡¡¡¡return_if_fail(thiz != NULL);

¡¡¡¡if(thiz->attack != NULL)

¡¡¡¡{

¡¡¡¡thiz->attack(thiz);

¡¡¡¡}

¡¡¡¡}

¡¡¡¡static inline void player_defend(Player *thiz)

¡¡¡¡{

¡¡¡¡return_if_fail(thiz != NULL);

¡¡¡¡if(thiz->defend != NULL)

¡¡¡¡{

¡¡¡¡thiz->defend(thiz);

¡¡¡¡}

¡¡¡¡}

¡¡¡¡static inline void player_destroy(Player *thiz)

¡¡¡¡{

¡¡¡¡return_if_fail(thiz != NULL);

¡¡¡¡if(thiz->destroy != NULL)

¡¡¡¡{

¡¡¡¡thiz->destroy(thiz);

¡¡¡¡}

¡¡¡¡}

¡¡¡¡#ifdef __cplusplus

¡¡¡¡}

¡¡¡¡#endif

¡¡¡¡#endif

¡¡¡¡#ifndef __PLAYER_H__

¡¡¡¡#define __PLAYER_H__

¡¡¡¡#include "typedef.h"

¡¡¡¡#ifdef __cplusplus

¡¡¡¡extern "C" {

¡¡¡¡#endif

¡¡¡¡struct _Player;

¡¡¡¡typedef struct _Player Player;

¡¡¡¡struct _Player

¡¡¡¡{

¡¡¡¡char *name;

¡¡¡¡void (*attack)(void *player);

¡¡¡¡void (*defend)(void *player);

¡¡¡¡void (*destroy)(void *player);

¡¡¡¡};

¡¡¡¡static inline void player_attack(Player *thiz)

¡¡¡¡{

¡¡¡¡return_if_fail(thiz != NULL);

¡¡¡¡if(thiz->attack != NULL)

¡¡¡¡{

¡¡¡¡thiz->attack(thiz);

¡¡¡¡}

¡¡¡¡}

¡¡¡¡static inline void player_defend(Player *thiz)

¡¡¡¡{

¡¡¡¡return_if_fail(thiz != NULL);

¡¡¡¡if(thiz->defend != NULL)

¡¡¡¡{

¡¡¡¡thiz->defend(thiz);

¡¡¡¡}

¡¡¡¡}

¡¡¡¡static inline void player_destroy(Player *thiz)

¡¡¡¡{

¡¡¡¡return_if_fail(thiz != NULL);

¡¡¡¡if(thiz->destroy != NULL)

¡¡¡¡{

¡¡¡¡thiz->destroy(thiz);

¡¡¡¡}

¡¡¡¡}

¡¡¡¡#ifdef __cplusplus

¡¡¡¡}

¡¡¡¡#endif

¡¡¡¡#endif

¡¡¡¡forwardsplayer.h

¡¡¡¡[html]

¡¡¡¡#ifndef __FORWARDSPLAYER_H__

¡¡¡¡#define __FORWARDSPLAYER_H__

¡¡¡¡#include "player.h"

¡¡¡¡#ifdef __cplusplus

¡¡¡¡extern "C" {

¡¡¡¡#endif

¡¡¡¡struct _Forwards;

¡¡¡¡typedef struct _Forwards Forwards;

¡¡¡¡struct _Forwards

¡¡¡¡{

¡¡¡¡Player player;

¡¡¡¡};

¡¡¡¡Forwards *ForwardsCreate(char *name);

¡¡¡¡#ifdef __cplusplus

¡¡¡¡}

¡¡¡¡#endif

¡¡¡¡#endif

¡¡¡¡#ifndef __FORWARDSPLAYER_H__

¡¡¡¡#define __FORWARDSPLAYER_H__

¡¡¡¡#include "player.h"

¡¡¡¡#ifdef __cplusplus

¡¡¡¡extern "C" {

¡¡¡¡#endif

¡¡¡¡struct _Forwards;

¡¡¡¡typedef struct _Forwards Forwards;

¡¡¡¡struct _Forwards

¡¡¡¡{

¡¡¡¡Player player;

¡¡¡¡};

¡¡¡¡Forwards *ForwardsCreate(char *name);

¡¡¡¡#ifdef __cplusplus

¡¡¡¡}

¡¡¡¡#endif

¡¡¡¡#endif

¡¡¡¡forwardsplayer.c

¡¡¡¡[html]

¡¡¡¡#include <stdio.h>

¡¡¡¡#include <stdlib.h>

¡¡¡¡#include "forwardsplayer.h"

¡¡¡¡static void forwards_attack(void *thiz)

¡¡¡¡{

¡¡¡¡printf("ǰ·æ %s ½ø¹¥\n", ((Forwards *)thiz)->player.name);

¡¡¡¡}

¡¡¡¡static void forwards_defend(void *thiz)

¡¡¡¡{

¡¡¡¡printf("ǰ·æ %s ·ÀÊØ\n", ((Forwards *)thiz)->player.name);

¡¡¡¡}

¡¡¡¡static void forwards_destroy(void *thiz)

¡¡¡¡{

¡¡¡¡return_if_fail(thiz !=  NULL);

¡¡¡¡SAFE_FREE(thiz);

¡¡¡¡}

¡¡¡¡Forwards *ForwardsCreate(char *name)

¡¡¡¡{

¡¡¡¡Forwards *thiz = malloc(sizeof(Forwards));

¡¡¡¡if(thiz != NULL)

¡¡¡¡{

¡¡¡¡thiz->player.name = name;

¡¡¡¡thiz->player.attack = forwards_attack;

¡¡¡¡thiz->player.defend = forwards_defend;

¡¡¡¡thiz->player.destroy = forwards_destroy;

¡¡¡¡}

¡¡¡¡//printf("%s\n", thiz->player->name);

¡¡¡¡return thiz;

¡¡¡¡}

¡¡¡¡#include <stdio.h>

¡¡¡¡#include <stdlib.h>

¡¡¡¡#include "forwardsplayer.h"

¡¡¡¡static void forwards_attack(void *thiz)

¡¡¡¡{

¡¡¡¡printf("ǰ·æ %s ½ø¹¥\n", ((Forwards *)thiz)->player.name);

¡¡¡¡}

¡¡¡¡static void forwards_defend(void *thiz)

¡¡¡¡{

¡¡¡¡printf("ǰ·æ %s ·ÀÊØ\n", ((Forwards *)thiz)->player.name);

¡¡¡¡}

¡¡¡¡static void forwards_destroy(void *thiz)

¡¡¡¡{

¡¡¡¡return_if_fail(thiz !=  NULL);

¡¡¡¡SAFE_FREE(thiz);

¡¡¡¡}

¡¡¡¡Forwards *ForwardsCreate(char *name)

¡¡¡¡{

¡¡¡¡Forwards *thiz = malloc(sizeof(Forwards));

¡¡¡¡if(thiz != NULL)

¡¡¡¡{

¡¡¡¡thiz->player.name = name;

¡¡¡¡thiz->player.attack = forwards_attack;

¡¡¡¡thiz->player.defend = forwards_defend;

¡¡¡¡thiz->player.destroy = forwards_destroy;

¡¡¡¡}

¡¡¡¡//printf("%s\n", thiz->player->name);

¡¡¡¡return thiz;

¡¡¡¡}

¡¡¡¡centerplayer.h

¡¡¡¡[html]

¡¡¡¡#ifndef __CENTERPLAYER_H__

¡¡¡¡#define __CENTERPLAYER_H__

¡¡¡¡#include "player.h"

¡¡¡¡#ifdef __cplusplus

¡¡¡¡extern "C" {

¡¡¡¡#endif

¡¡¡¡struct _Center;

¡¡¡¡typedef struct _Center Center;

¡¡¡¡struct _Center

¡¡¡¡{

¡¡¡¡Player player;

¡¡¡¡};

¡¡¡¡Center *CenterCreate(char *name);

¡¡¡¡#ifdef __cplusplus

¡¡¡¡}

¡¡¡¡#endif

¡¡¡¡#endif

¡¡¡¡#ifndef __CENTERPLAYER_H__

¡¡¡¡#define __CENTERPLAYER_H__

¡¡¡¡#include "player.h"

¡¡¡¡#ifdef __cplusplus

¡¡¡¡extern "C" {

¡¡¡¡#endif

¡¡¡¡struct _Center;

¡¡¡¡typedef struct _Center Center;

¡¡¡¡struct _Center

¡¡¡¡{

¡¡¡¡Player player;

¡¡¡¡};

¡¡¡¡Center *CenterCreate(char *name);

¡¡¡¡#ifdef __cplusplus

¡¡¡¡}

¡¡¡¡#endif

¡¡¡¡#endif

¡¡¡¡centerplayer.c

¡¡¡¡[html]

¡¡¡¡#include <stdio.h>

¡¡¡¡#include <stdlib.h>

¡¡¡¡#include "centerplayer.h"

¡¡¡¡static void center_attack(void *thiz)

¡¡¡¡{

¡¡¡¡printf("Öзæ %s ½ø¹¥\n", ((Center *)thiz)->player.name);

¡¡¡¡}

¡¡¡¡static void center_defend(void *thiz)

¡¡¡¡{

¡¡¡¡printf("Öзæ %s ·ÀÊØ\n", ((Center *)thiz)->player.name);

¡¡¡¡}

¡¡¡¡static void center_destroy(void *thiz)

¡¡¡¡{

¡¡¡¡return_if_fail(thiz !=  NULL);

¡¡¡¡SAFE_FREE(thiz);

¡¡¡¡}

¡¡¡¡Center *CenterCreate(char *name)

¡¡¡¡{

¡¡¡¡Center *thiz = malloc(sizeof(Center));

¡¡¡¡if(thiz != NULL)

¡¡¡¡{

¡¡¡¡thiz->player.name = name;

¡¡¡¡thiz->player.attack = center_attack;

¡¡¡¡thiz->player.defend = center_defend;

¡¡¡¡thiz->player.destroy = center_destroy;

¡¡¡¡}

¡¡¡¡return thiz;

¡¡¡¡}

¡¡¡¡#include <stdio.h>

¡¡¡¡#include <stdlib.h>

¡¡¡¡#include "centerplayer.h"

¡¡¡¡static void center_attack(void *thiz)

¡¡¡¡{

¡¡¡¡printf("Öзæ %s ½ø¹¥\n", ((Center *)thiz)->player.name);

¡¡¡¡}

¡¡¡¡static void center_defend(void *thiz)

¡¡¡¡{

¡¡¡¡printf("Öзæ %s ·ÀÊØ\n", ((Center *)thiz)->player.name);

¡¡¡¡}

¡¡¡¡static void center_destroy(void *thiz)

¡¡¡¡{

¡¡¡¡return_if_fail(thiz !=  NULL);

¡¡¡¡SAFE_FREE(thiz);

¡¡¡¡}

¡¡¡¡Center *CenterCreate(char *name)

¡¡¡¡{

¡¡¡¡Center *thiz = malloc(sizeof(Center));

¡¡¡¡if(thiz != NULL)

¡¡¡¡{

¡¡¡¡thiz->player.name = name;

¡¡¡¡thiz->player.attack = center_attack;

¡¡¡¡thiz->player.defend = center_defend;

¡¡¡¡thiz->player.destroy = center_destroy;

¡¡¡¡}

¡¡¡¡return thiz;

¡¡¡¡}