亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? namenode.c

?? 老外寫的一個文件系統(tǒng)
?? C
字號:
#include "Platform.h"
#include "Debug/Debug.h"
#include "StdC.h"
#include "PageStack/PageStack.h"
#include "FileSystem/Fat32/FileTree/NameNode.h"
#include "FileSystem/Fat32/FileTree/Node.h"

//#define SHOW_NAME_CREATION	// uncomment to see name-nodes get created.
//#define SHOW_NAME_VISITS	// uncomment to see name-nodes get visited.


struct NameNode
{
	NameNodeHandle parentName;

	// the allocated memory for the string itself is only large enough 
	// to hold the string.  Do not make a string longer, EVER.
	char name[255+1];	
	// nothing may be placed after the name!
};

// a string-table page is a bunch of NameNode's, packed so that
// as many will fit as possible in a page (accounting for the size of teh string it contains too!)
// which is why you can't use all 256-bytes of the name once the name has been allocated.
XDATA_AT(PAGE_STACK_ADDRESS) char _NodeTablePort[BYTES_PER_PORT];

XDATA DramPageIndex _nextNewNamePage;
XDATA unsigned short _nextNewNameOffset;


void NAMENODE_Initialize(void)
{
	XDATA static String str;
	str = _STRING_CreateStringInCODE("NAMENODE Collection");
	_nextNewNamePage = DRAM_AllocatePage(str);
	_nextNewNameOffset = 0;
}

NameNodeHandle NAMENODE_AddName(
	NameNodeHandle nameOfParentFolder,
	XDATA char *name)
{
	XDATA static unsigned short nBytes;
	XDATA static struct NameNode *self;
	XDATA static unsigned short nameOffset;
	XDATA static DramPageIndex namePage;
	
#ifdef SHOW_NAME_CREATION	
	{
		XDATA static String str;
		str = _STRING_CreateStringInCODE("NAMENODE AddName\n\r");
		DbgMessage(DC_NAMENODE, str);
		DbgMessageNewLine(DC_NAMENODE);
		DbgMessageHex16(DC_NAMENODE, (unsigned short)name);
		DbgMessageNewLine(DC_NAMENODE);
	}
#endif

	nBytes = ( sizeof(*self) - sizeof(self->name) ) + strlenXDATA(name) + 1;
	nameOffset = _nextNewNameOffset;
	namePage = _nextNewNamePage;
	_nextNewNameOffset += nBytes;
	if(_nextNewNameOffset >= ENTRIES(_NodeTablePort))
	{
		// not enough space left in this page, create a new page!
		XDATA static String str;
		str = _STRING_CreateStringInCODE("NAMENODE Collection");
		namePage = DRAM_AllocatePage(str);
		_nextNewNamePage = namePage;
		nameOffset = 0;
		_nextNewNameOffset = 0;
	}
	
	// create the handle.
	{
		XDATA static NameNodeHandle newHandle;
		newHandle = MakeHandle(namePage, nameOffset);
		
		// populate the entry
		PAGESTACK_Push(namePage);
		self = (XDATA struct NameNode *)(&_NodeTablePort[nameOffset]);
		self->parentName = nameOfParentFolder;

		{
			XDATA static unsigned char *dst;
			dst = &self->name[0];

			// copy the string!
			if(name != 0)	// only get bytes from the string if it's not NULL!!!!
			{
				XDATA static unsigned char *src;
				src = &name[0];
				while(*src)
				{
					*dst = *src;
					dst++;
					src++;
				}
			}
			*dst = 0;	// terminator
		}
	
#ifdef SHOW_NAME_CREATION	
		{
			XDATA static String str;
			str = _STRING_CreateStringInCODE("NameNode [new] 0x");
			DbgMessage(DC_NAMENODE, str);
			DbgMessageHex32(DC_NAMENODE, newHandle);
			DbgMessageNewLine(DC_NAMENODE);
//			DbgHexDumpXDATA(DC_NAMENODE, (XDATA char *)self, sizeof(*self));
		}
#endif

		PAGESTACK_Pop();

#ifdef SHOW_NAME_CREATION	
		{
			XDATA static String str;
			str = _STRING_CreateStringInCODE("NameNode 0x");
			DbgMessage(DC_NAMENODE, str);
			DbgMessageHex32(DC_NAMENODE, newHandle);
			DbgMessageNewLine(DC_NAMENODE);
		}
#endif
		return newHandle;
	}
}

void NAMENODE_GetNameString(
	NameNodeHandle h, 
	XDATA char *strToBuildInto)	// IN, OUT
{
	XDATA static struct NameNode *self;
	XDATA static char *name;

#ifdef SHOW_NAME_VISITS
	XDATA static String str;
	str = _STRING_CreateStringInCODE("NameNode [visit GetString] 0x");
	DbgMessage(DC_NAMENODE, str);
	DbgMessageHex32(DC_NAMENODE, h);
	DbgMessageNewLine(DC_NAMENODE);
#endif

	PAGESTACK_Push(GetPage(h));
	self = (XDATA struct NameNode *)(&_NodeTablePort[GetOffsetShort(h)]);
	name = &self->name[0];	// find the beginning of the string (it follows the structure)
	while(*name != 0)
	{	// copying the string...
		*strToBuildInto = *name;
		strToBuildInto++;
		name++;
	}
	*strToBuildInto = 0;	// terminate!
	PAGESTACK_Pop();
}

char NAMENODE_IsExtentionMP3(NameNodeHandle h)
{
	XDATA static struct NameNode *self;
	XDATA static char *name;

#ifdef SHOW_NAME_VISITS
	XDATA static String str;
	str = _STRING_CreateStringInCODE("NameNode [visit Ext] 0x");
	DbgMessage(DC_NAMENODE, str);
	DbgMessageHex32(DC_NAMENODE, h);
	DbgMessageNewLine(DC_NAMENODE);
#endif

	PAGESTACK_Push(GetPage(h));
	self = (XDATA struct NameNode *)(&_NodeTablePort[GetOffsetShort(h)]);
	name = &self->name[0];	// find the beginning of the string (it follows the structure)
	
	// find end of string.
	while(*name != 0)
		name++;
	
	name -= 4;
	if( (*(name++)) == '.' )
	{
		if( tolower(*(name++)) == 'm' )
		{
			if( tolower(*(name++)) == 'p' )
			{
				if( (*(name++)) == '3' )
				{
					PAGESTACK_Pop();
					return 1;
				}
			}
		}
	}
	
	// nope - no match.
	PAGESTACK_Pop();
	return 0;
}

_CONSTANT_DATA(NAMENODE)

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产夫妻精品视频| 成人性生交大片免费看视频在线 | 欧美天天综合网| 日韩亚洲欧美一区二区三区| 国产精品久久久久久妇女6080| 亚洲影院理伦片| 成人禁用看黄a在线| 91精品国产91久久久久久一区二区 | 日韩写真欧美这视频| 国产精品国产精品国产专区不蜜| 性做久久久久久| 色综合久久久久| 国产精品全国免费观看高清 | 7777精品伊人久久久大香线蕉的| 国产精品成人一区二区艾草| 久久99精品久久只有精品| 欧洲生活片亚洲生活在线观看| 久久久不卡网国产精品一区| 日日夜夜一区二区| 欧美色窝79yyyycom| 在线免费观看成人短视频| 亚洲综合激情小说| 成人精品视频一区二区三区尤物| 日韩欧美国产一区在线观看| 亚洲高清视频在线| 91福利资源站| 亚洲午夜久久久久| 欧美性大战久久久久久久蜜臀| 中文字幕一区二区三区不卡| 成人免费看的视频| 国产欧美日韩视频在线观看| 国产一区二区三区观看| 久久免费电影网| 国产乱码字幕精品高清av| 欧美白人最猛性xxxxx69交| 蜜桃av噜噜一区| 欧美一区二区免费| 久久精品国产**网站演员| 91精品国产综合久久香蕉的特点| 天堂精品中文字幕在线| 777午夜精品免费视频| 日韩av网站免费在线| 国产亚洲欧美一级| 日韩欧美美女一区二区三区| 婷婷中文字幕综合| 日韩一区二区三区四区五区六区| 丝袜美腿成人在线| 日韩欧美亚洲一区二区| 国产麻豆精品视频| 国产精品乱人伦中文| 91蝌蚪国产九色| 五月婷婷激情综合网| 欧美一卡2卡3卡4卡| 国产一区二区三区蝌蚪| 国产精品亲子乱子伦xxxx裸| 日本韩国欧美国产| 日韩电影在线免费看| 久久天天做天天爱综合色| 成人理论电影网| 亚洲成人av福利| 精品91自产拍在线观看一区| 成人免费高清视频在线观看| 亚洲精品成a人| 日韩免费高清av| caoporn国产精品| 日韩黄色小视频| 日本一区二区三区久久久久久久久不| 91啦中文在线观看| 精品一区二区三区视频在线观看 | 欧美人妇做爰xxxⅹ性高电影 | 国产超碰在线一区| 亚洲自拍都市欧美小说| 国产精品免费视频一区| 欧美伊人久久大香线蕉综合69| 喷白浆一区二区| 日韩毛片在线免费观看| 日韩欧美电影在线| 一本到不卡精品视频在线观看| 日韩av不卡在线观看| 国产精品久久久久久久久果冻传媒 | 男女男精品视频网| 国产精品久久一级| 精品美女在线观看| 欧美午夜免费电影| 成人在线一区二区三区| 蜜臀av性久久久久蜜臀aⅴ四虎| 欧美国产禁国产网站cc| 欧美一区二区福利在线| 色婷婷av一区二区三区之一色屋| 精品一区二区三区免费播放| 亚洲图片欧美视频| 亚洲欧美自拍偷拍色图| 精品sm捆绑视频| 51精品视频一区二区三区| 99久久国产综合精品女不卡| 狠狠色狠狠色综合| 日本系列欧美系列| 亚洲午夜精品网| 亚洲欧美一区二区久久| 国产人成一区二区三区影院| 欧美一级片在线| 欧美日韩国产成人在线91| av激情综合网| 成人不卡免费av| 国产成人午夜高潮毛片| 国内欧美视频一区二区| 日日夜夜免费精品视频| 亚洲二区在线视频| 亚洲一级片在线观看| 亚洲男人都懂的| 亚洲精品水蜜桃| 玉米视频成人免费看| 亚洲色图自拍偷拍美腿丝袜制服诱惑麻豆| 久久亚洲二区三区| 337p粉嫩大胆噜噜噜噜噜91av | 色综合天天狠狠| 91影院在线免费观看| 成人网男人的天堂| 国产成人午夜视频| 成人av在线播放网址| 国产成人久久精品77777最新版本| 精品综合久久久久久8888| 国产揄拍国内精品对白| 国产在线视频精品一区| 粉嫩aⅴ一区二区三区四区五区| 国产91丝袜在线播放九色| 福利一区二区在线观看| 99久久国产综合精品色伊| 成人app网站| 欧洲一区二区三区免费视频| 欧美日韩国产一级片| 91精品国产综合久久福利软件| 欧美变态tickling挠脚心| 久久久久久夜精品精品免费| 亚洲国产精品黑人久久久| 亚洲欧美日本在线| 日韩中文字幕麻豆| 国产一区不卡在线| 91麻豆精品秘密| 91精品国产综合久久精品| 久久久久久99久久久精品网站| 国产精品区一区二区三| 午夜亚洲国产au精品一区二区| 视频一区二区中文字幕| 国产精品白丝jk白祙喷水网站| 成人sese在线| 欧美精品久久久久久久久老牛影院| 欧美哺乳videos| 日韩美女精品在线| 欧美aaa在线| 99精品欧美一区二区三区小说| 欧美色综合久久| 国产欧美视频在线观看| 亚洲h动漫在线| 国产黄人亚洲片| 欧美色涩在线第一页| 国产亚洲欧美色| 天天操天天干天天综合网| 国产精品亚洲а∨天堂免在线| 日本乱人伦一区| 国产无遮挡一区二区三区毛片日本| 亚洲激情在线激情| 国产精一品亚洲二区在线视频| 91精品福利视频| 国产偷国产偷亚洲高清人白洁| 亚洲第一福利一区| 成人h精品动漫一区二区三区| 91精品在线一区二区| 国产精品电影院| 国产乱理伦片在线观看夜一区| 欧美视频在线一区二区三区 | 国产不卡视频一区二区三区| 欧美优质美女网站| 国产精品免费视频网站| 精品影视av免费| 欧美乱妇15p| 亚洲激情中文1区| av高清久久久| 久久精品日韩一区二区三区| 日本视频一区二区| 精品视频全国免费看| 亚洲情趣在线观看| 成人黄色软件下载| 久久蜜桃一区二区| 久久99精品网久久| 欧美一区二区成人| 亚洲成av人在线观看| 欧美主播一区二区三区美女| 国产精品久久久久9999吃药| 国产一区二区三区在线观看精品 | 亚洲第一久久影院| 色综合久久中文字幕综合网| 中日韩av电影| 成人丝袜视频网| 亚洲国产精品ⅴa在线观看| 国产乱码精品一区二区三| 久久这里只有精品首页| 久久99在线观看| 久久久亚洲国产美女国产盗摄 | 不卡视频在线观看|