goahead 部分代码抽取学习

#include "stdafx.h"
#include <iostream>
using namespace std;
typedef time_t WebsTime;
typedef unsigned long ulong;
typedef unsigned char uchar;
typedef struct WebsMime {
	char    *type;                          /**< Mime type */
	char    *ext;                           /**< File extension */
} WebsMime;
typedef struct WebsFileInfo {
	ulong           size;                   /**< File length */
	int             isDir;                  /**< Set if directory */
	WebsTime        mtime;                  /**< Modified time */
} WebsFileInfo;
typedef long long int int64;
typedef int64 Offset;
typedef struct WebsRomIndex {
	char            *path;                  /**< Web page URL path */
	uchar           *page;                  /**< Web page data */
	int             size;                   /**< Size of web page in bytes */
	Offset          pos;                    /**< Current read position */
} WebsRomIndex;
#include <stdio.h>
#include <assert.h>
#define PUBLIC
#define PUBLIC_DATA extern
#define PRIVATE     static
typedef const char cchar;
typedef size_t ssize;
#define MAXINT 256
#include <string.h>
PUBLIC ssize slen(cchar *s)
{
	return s ? strlen(s) : 0;
}
PUBLIC ssize scopy(char *dest, ssize destMax, cchar *src)
{
	ssize      len;

	assert(src);
	assert(dest);
	assert(0 < dest && destMax < MAXINT);

	len = slen(src);
	if (destMax <= len) {
		if (destMax > 0) {
			*dest = '\0';
		}
		return -1;
	}
	strcpy(dest, src);
	return len;
}
typedef void (*WebsMemNotifier)(ssize size);
static WebsMemNotifier memNotifier;

PUBLIC void *walloc(ssize num)
{
	void    *mem;

	if ((mem = malloc(num)) == 0) {
		if (memNotifier) {
			(memNotifier)(num);
		}
	}
	return mem;
}


PUBLIC void wfree(void *mem)
{
	if (mem) {
		free(mem);
	}
}

typedef struct WebsBuf {
	char    *buf;               /**< Holding buffer for data */
	char    *servp;             /**< Pointer to start of data */
	char    *endp;              /**< Pointer to end of data */
	char    *endbuf;            /**< Pointer to end of buffer */
	ssize   buflen;             /**< Length of ring queue */
	ssize   maxsize;            /**< Maximum size */
	int     increment;          /**< Growth increment */
} WebsBuf;
typedef int Socket;
typedef int (*SocketAccept)(int sid, cchar *ipaddr, int port, int listenSid);
typedef void (*SocketHandler)(int sid, int mask, void *data);
typedef struct WebsSocket {
	WebsBuf         lineBuf;            /**< Line ring queue */
	SocketAccept    accept;             /**< Accept handler */
	SocketHandler   handler;            /**< User I/O handler */
	char            *ip;                /**< Server listen address or remote client address */
	void            *handler_data;      /**< User handler data */
	int             handlerMask;        /**< Handler events of interest */
	int             sid;                /**< Index into socket[] */
	int             port;               /**< Port to listen on */
	int             flags;              /**< Current state flags */
	Socket          sock;               /**< Actual socket handle */
	int             fileHandle;         /**< ID of the file handler */
	int             interestEvents;     /**< Mask of events to watch for */
	int             currentEvents;      /**< Mask of ready events (FD_xx) */
	int             selectEvents;       /**< Events being selected */
	int             saveMask;           /**< saved Mask for socketFlush */
	int             error;              /**< Last error */
	int             secure;             /**< Socket is using SSL */
	int             handshakes;         /**< Number of renegotiations */
} WebsSocket;

int main()
{
	const char* str = "sdfsfds";
	char *abc=(char*)walloc(100);
    wfree(abc);
	cout<<slen(str)<<endl;
    system("PAUSE");
	return 0;
}

  

posted on 2022-09-25 10:04  lydstory  阅读(21)  评论(0)    收藏  举报

导航