• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

C++ STRINGLIST类代码示例

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

本文整理汇总了C++中STRINGLIST的典型用法代码示例。如果您正苦于以下问题:C++ STRINGLIST类的具体用法?C++ STRINGLIST怎么用?C++ STRINGLIST使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。



在下文中一共展示了STRINGLIST类的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。

示例1: AddLine

void QuestActionContainer :: AddLine(const char *statement)
{
	STRINGLIST commands;
	Util::Split(statement, ";", commands);
	for(size_t i = 0; i < commands.size(); i++)
		AddCommand(commands[i]);
}
开发者ID:kgrubb,项目名称:iceee,代码行数:7,代码来源:QuestAction.cpp


示例2: PlaySound

void AINutPlayer::PlaySound(const char *name) {
	STRINGLIST sub;
	Util::Split(name, "|", sub);
	while (sub.size() < 2) {
		sub.push_back("");
	}
	attachedCreature->SendPlaySound(sub[0].c_str(), sub[1].c_str());
}
开发者ID:Wuffie12,项目名称:iceee,代码行数:8,代码来源:AIScript2.cpp


示例3: InitCommand

bool ExtendedQuestAction :: InitCommand(const STRINGLIST &tokenList)
{
	if(tokenList.size() < 1)
		return false;
	const QuestScriptCommandDef *cmd = GetCommandDef(tokenList[0]);
	if(cmd == 0)
	{
		g_Logs.data->warn("Quest command not recognized [%v]", tokenList[0].c_str());
		return false;
	}
	size_t tokenCount = tokenList.size();
	if(tokenCount != cmd->numParams + 1)  //First token is command itself
	{
		g_Logs.data->warn("Expected [%v] arguments for command [%v]", cmd->numParams, cmd->name);
		return false;
	}

	opCode = cmd->opCode;
	for(int i = 0; i < cmd->numParams; i++)
	{
		bool valid = false;
		int result = 0;
		valid = ResolveOperand(tokenList[1 + i], cmd->paramType[i], result);
		if(valid == false)
			return false;
		param[i] = result;
	}
	return true;

	/*
	int opCode = GetCondition(tokenList[0]);
	size_t tokenCount = tokenList.size();
	int p1 = 0;
	int p2 = 0;
	int p3 = 0;
	switch(opCode)
	{
	case CONDITION_HASSTAT:
		if(ExpectTokens(tokenCount, 4) == false) return false;
		p1 = GetStatIDByName(tokenList[1]);
		p2 = GetComparator(tokenList[2]);
		p3 = Util::GetFloat(tokenList[3]);
		if(p1 == -1 || p2 == COMP_NONE)
			return false;
		break;
	case CONDITION_HASITEM:
		if(ExpectTokens(tokenCount, 3) == false) return false;
		p1 = Util::GetInteger(tokenList[1]);
		p2 = Util::GetInteger(tokenList[2]);
		break;
	}
	commandType = opCode;
	param1 = p1;
	param2 = p2;
	param3 = p3;
	return true;
	*/
}
开发者ID:kgrubb,项目名称:iceee,代码行数:58,代码来源:QuestAction.cpp


示例4: EnumCategoryList

void IGFManager :: EnumCategoryList(int parentID, MULTISTRING &output)
{
	STRINGLIST entry;
	CATEGORYPAGE::iterator it;
	IGFCategoryPage::CATEGORYENTRY::iterator eit;
	for(it = mCategoryPages.begin(); it != mCategoryPages.end(); ++it)
	{
		for(eit = it->second.mEntries.begin(); eit != it->second.mEntries.end(); ++eit)
		{
			if(eit->second.mParentCategory == parentID)
			{
				entry.push_back(ConvertInteger(TYPE_CATEGORY));
				entry.push_back(ConvertInteger(eit->second.mID));
				entry.push_back(ConvertInteger(eit->second.mLocked));
				entry.push_back(ConvertInteger(0)); //Stickied.  Categories don't have this.
				entry.push_back(eit->second.mTitle);
				entry.push_back(ConvertInteger(eit->second.mThreadList.size()));
				entry.push_back(ConvertInteger(GetTimeOffset(eit->second.mLastUpdateTime)));

				output.push_back(entry);
				entry.clear();
			}
		}
	}
}
开发者ID:kgrubb,项目名称:iceee,代码行数:25,代码来源:IGForum.cpp


示例5: d

const char * Platform::Filename(const char *path)
{
	STRINGLIST v;
	const std::string p = path;
	const std::string d(1, PLATFORM_FOLDERVALID);
	Util::Split(p, d.c_str(), v);
	if(v.size() == 0)
		return "";
	else
		return v[v.size() - 1].c_str();
}
开发者ID:Wuffie12,项目名称:iceee,代码行数:11,代码来源:DirectoryAccess.cpp


示例6: AssignFloatArrayFromStringSplit

//Break a comma-delimited string into tokens, then loading the converted values into a raw array of floats.
void AssignFloatArrayFromStringSplit(float *arrayDest, size_t arraySize, const std::string &strData)
{
	STRINGLIST strArray;
	Split(strData, ",", strArray);
	for(size_t i = 0; i < strArray.size(); i++)
	{
		if(i >= arraySize)
			return;
		arrayDest[i] = static_cast<float>(atof(strArray[i].c_str()));
	}
}
开发者ID:kgrubb,项目名称:iceee,代码行数:12,代码来源:Util.cpp


示例7: if

const char * Platform::Extension(const char *path)
{
	STRINGLIST v;
	const std::string p = Filename(path);
	const std::string d(1, PLATFORM_FOLDERVALID);
	Util::Split(p, ".", v);
	if(v.size() == 0)
		return "";
	else if(v.size() == 1)
		return v[0].c_str();
	else
		return v[v.size() - 1].c_str();
}
开发者ID:Wuffie12,项目名称:iceee,代码行数:13,代码来源:DirectoryAccess.cpp


示例8: EnumThreadList

void IGFManager :: EnumThreadList(int parentID, MULTISTRING &output)
{
	IGFCategory* category = GetPagedCategoryPtr(parentID);
	if(category == NULL)
		return;

	//Pregenerate a list of threads
	std::vector<IGFThread*> results;
	for(size_t i = 0; i < category->mThreadList.size(); i++)
	{
		IGFThread* thread = GetPagedThreadPtr(category->mThreadList[i]);
		if(thread != NULL)
			results.push_back(thread);
	}

	if(category->mFlags.hasFlag(IGFFlags::FLAG_SORTALPHABETICAL))
		std::sort(results.begin(), results.end(), ThreadSortAlphabetical);

	STRINGLIST entry;
	for(size_t i = 0; i < results.size(); i++)
	{
		IGFThread* thread = results[i];
		entry.push_back(ConvertInteger(TYPE_THREAD));
		entry.push_back(ConvertInteger(thread->mID));
		entry.push_back(ConvertInteger(thread->mLocked));
		entry.push_back(ConvertInteger(thread->mStickied));
		entry.push_back(thread->mTitle);
		entry.push_back(ConvertInteger(thread->mPostList.size()));
		entry.push_back(ConvertInteger(GetTimeOffset(thread->mLastUpdateTime)));

		output.push_back(entry);
		entry.clear();
	}
}
开发者ID:kgrubb,项目名称:iceee,代码行数:34,代码来源:IGForum.cpp


示例9: CleanPriorityMap

void CServerDefinitions::LoadDFNCategory( DEFINITIONCATEGORIES toLoad )
{
	CleanPriorityMap();
	defaultPriority = 0;
	UI08 wasPriod = 2;
	BuildPriorityMap( toLoad, wasPriod );

	cDirectoryListing fileList( toLoad, defExt );
	fileList.Flatten( true );
	STRINGLIST *shortListing	= fileList.FlattenedShortList();
	STRINGLIST *longListing		= fileList.FlattenedList();

	std::vector< PrioScan >	mSort;
	for( size_t i = 0; i < shortListing->size(); ++i )
	{
		mSort.push_back( PrioScan( (*longListing)[i].c_str(), GetPriority( (*shortListing)[i].c_str() ) ) );
	}
	if( !mSort.empty() )
	{
		std::sort( mSort.begin(), mSort.end() );
		Console.Print( "Section %20s : %6i", dirnames[toLoad].c_str(), 0 );
		size_t iTotal = 0;
		Console.TurnYellow();

		std::vector< PrioScan >::const_iterator mIter;
		for( mIter = mSort.begin(); mIter != mSort.end(); ++mIter )
		{
			Console.Print( "\b\b\b\b\b\b" );
			ScriptListings[toLoad].push_back( new Script( (*mIter).filename, toLoad, false ) );
			iTotal += ScriptListings[toLoad].back()->NumEntries();
			Console.Print( "%6i", iTotal );
		}

		Console.Print( "\b\b\b\b\b\b%6i", CountOfEntries( toLoad ) );
		Console.TurnNormal();
		Console.Print( " entries" );
		switch( wasPriod )
		{
			case 0:	Console.PrintSpecial( CGREEN,	"prioritized" );					break;	// prioritized
			case 1:	
				Console.PrintSpecial( CGREEN,		"done" );		
				break;	// file exist, no section
			default:
			case 2:	
				Console.PrintSpecial( CBLUE,	"done" );		
				break;	// no file
		};
	}
}
开发者ID:bholtsclaw,项目名称:uox3,代码行数:49,代码来源:cServerDefinitions.cpp


示例10: Filename

const char * Platform::Basename(const char *path)
{
	STRINGLIST v;
	const std::string p = Filename(path);
	const std::string d(1, PLATFORM_FOLDERVALID);
	Util::Split(p, ".", v);
	if(v.size() == 0)
		return "";
	else {
		std::string t;
		v.erase(v.end() - 1);
		Util::Join(v, d.c_str(), t);
		return t.c_str();
	}
}
开发者ID:Wuffie12,项目名称:iceee,代码行数:15,代码来源:DirectoryAccess.cpp


示例11: GetCategory

void IGFManager :: GetCategory(int id, MULTISTRING &output)
{
	IGFCategory *category = GetPagedCategoryPtr(id);
	if(category == NULL)
		return;

	STRINGLIST header;

	header.push_back(ConvertInteger(id));
	header.push_back(category->mTitle);
	output.push_back(header);

	EnumCategoryList(id, output);
	EnumThreadList(id, output);
}
开发者ID:kgrubb,项目名称:iceee,代码行数:15,代码来源:IGForum.cpp


示例12: priorityFile

void CServerDefinitions::BuildPriorityMap( DEFINITIONCATEGORIES category, UI08& wasPrioritized )
{
	cDirectoryListing priorityFile( category, "priority.nfo", false );
	STRINGLIST *longList = priorityFile.List();
	if( longList->size() > 0 )
	{
		std::string filename = (*longList)[0];
		//	Do we have any priority informat?
		if( FileExists( filename ) )	// the file exists, so perhaps we do
		{
			Script *prio = new Script( filename, category, false );	// generate a script for it
			if( prio != NULL )	// successfully made a script
			{
				UString tag;
				UString data;
				ScriptSection *prioInfo = prio->FindEntry( "PRIORITY" );	// find the priority entry
				if( prioInfo != NULL )
				{
					for( tag = prioInfo->First(); !prioInfo->AtEnd(); tag = prioInfo->Next() )	// keep grabbing priority info
					{
						data = prioInfo->GrabData();
						if( tag.upper() == "DEFAULTPRIORITY" )
							defaultPriority = data.toShort();
						else
						{
							std::string filenametemp = tag.lower();
							priorityMap[filenametemp] = data.toShort();
						}
					}
					wasPrioritized = 0;
				}
				else
					wasPrioritized = 1;
				delete prio;	// remove script
				prio = NULL;
			}
			else
				wasPrioritized = 2;
			return;
		}
	}
#if defined( UOX_DEBUG_MODE )
//	Console.Warning( "Failed to open priority.nfo for reading in %s DFN", dirnames[category].c_str() );
#endif
	wasPrioritized = 2;
}
开发者ID:bholtsclaw,项目名称:uox3,代码行数:46,代码来源:cServerDefinitions.cpp


示例13: TokenizeByWhitespace

// Tokenize a string using whitespace as separators, but including string quotations.
void TokenizeByWhitespace(const std::string &input, STRINGLIST &output)
{
	std::string str = input;
	output.clear();
	size_t len = str.size();
	int first = -1;
	int last = -1;
	bool quote = false;
	bool terminate = false;
	for(size_t i = 0; i < len; i++)
	{
		switch(input[i])
		{
		case '"':
			terminate = true;  //Treat opening quote as a block start
			quote = !quote;
			break;

		case ' ':
		case '\t':
		case '\n':
		case '\r':
			if(quote == false)
				terminate = true;
			break;
		default:
			if(first == -1)
				first = i;
			last = i;
		}
		if(terminate == true)
		{
			if(first >= 0 && last >= 0)
			{
				std::string t = str.substr(first, last - first + 1);
				output.push_back(str.substr(first, last - first + 1));
				first = -1;
				last = -1;
			}
			terminate = false;
		}
	}
	if(first != -1 && first < (int)len)
		output.push_back(str.substr(first, len - first + 1));
}
开发者ID:kgrubb,项目名称:iceee,代码行数:46,代码来源:Util.cpp


示例14: AddCommand

void QuestActionContainer :: AddCommand(const std::string &command)
{
	STRINGLIST tokens;
	//Util::Split(command, " ", tokens);
	Util::TokenizeByWhitespace(command, tokens);
	if(tokens.size() == 0)
	{
		g_Logs.data->warn("No tokens in command.");
		return;
	}
	ExtendedQuestAction inst;
	if(inst.InitCommand(tokens) == true)
	{
		//Debug disassembly
		//g_Log.AddMessageFormat("%s = [%d]=%d,%d,%d", command.c_str(), inst.opCode, inst.param[0], inst.param[1], inst.param[2]);

		mInstList.push_back(inst);
	}
}
开发者ID:kgrubb,项目名称:iceee,代码行数:19,代码来源:QuestAction.cpp


示例15: OpenCategory

void IGFManager :: OpenCategory(int type, int id, MULTISTRING &output)
{
	//Expand an object.  If it's a category, enumerate a list of subcategories.
	if(type == TYPE_CATEGORY)
	{
		IGFCategory *category = GetPagedCategoryPtr(id);
		if(category != NULL)
		{
			STRINGLIST header;
			header.push_back(ConvertInteger(id));
			header.push_back(category->mTitle);

			output.push_back(header);

			int searchID = category->mID;
			EnumCategoryList(searchID, output);
			EnumThreadList(searchID, output);
		}
	}
}
开发者ID:kgrubb,项目名称:iceee,代码行数:20,代码来源:IGForum.cpp


示例16: ClearFlatten

void cDirectoryListing::Flatten( bool isParent )
{
	ClearFlatten();
	std::string temp;
	STRINGLIST_ITERATOR sIter;
	for( sIter = filenameList.begin(); sIter != filenameList.end(); ++sIter )
	{
		flattenedFull.push_back( (*sIter) );
		if( isParent )
			temp = "";
		else
		{
			temp = shortCurrentDir;
			temp += "/";
		}
		temp += (*sIter);
		flattenedShort.push_back( temp );
	}
	DIRLIST_ITERATOR dIter;
	for( dIter = subdirectories.begin(); dIter != subdirectories.end(); ++dIter )
	{
		(*dIter).Flatten( false );
		STRINGLIST *shortFlat	= (*dIter).FlattenedShortList();
		STRINGLIST *longFlat	= (*dIter).FlattenedList();
		for( size_t k = 0; k < longFlat->size(); ++k )
		{
			flattenedFull.push_back( (*longFlat)[k] );
			if( isParent )
				temp = "";
			else
			{
				temp = shortCurrentDir;
				temp += "/";
			}
			temp += (*shortFlat)[k];
			flattenedShort.push_back( temp );
		}
		(*dIter).ClearFlatten();
	}
}
开发者ID:bholtsclaw,项目名称:uox3,代码行数:40,代码来源:cServerDefinitions.cpp


示例17:

std::vector<std::string> InfoManager::GetLoadingAnnouncments() {
	STRINGLIST l = g_ClusterManager.GetList(LISTPREFIX_LOADING_ANNOUNCMENTS);
	STRINGLIST s;
	if(l.size() == 0) {
		s.push_back(StringUtil::Format(ReplaceBrandingPatterns("Welcome to ${GameName} - ${Edition}. You can set your own <b>Loading Announcements</b> by creating and adding multiple elements to the list <b>'%s'</b> in the Redis database."), LISTPREFIX_LOADING_ANNOUNCMENTS.c_str()));
	}
	else {
		for(auto it = l.begin(); it != l.end(); ++it) {
			s.push_back(ReplaceBrandingPatterns(*it));
		}
	}
	return s;

}
开发者ID:rockfireredmoon,项目名称:iceee,代码行数:14,代码来源:Info.cpp


示例18: PrepExt_QueryResponseStringList

int PrepExt_QueryResponseStringList(char *buffer, int queryIndex, const STRINGLIST &strData)
{
	int wpos = 0;
	wpos += PutByte(&buffer[wpos], 1);              //_handleQueryResultMsg
	wpos += PutShort(&buffer[wpos], 0);             //Placeholder for message size
	wpos += PutInteger(&buffer[wpos], queryIndex);  //Query response index
	wpos += PutShort(&buffer[wpos], 1);             //Row count

	int count = strData.size();
	if(count > 255)
	{
		g_Logs.server->warn("PrepExt_QueryResponseStringList too many strings: %v", count);
		count = 255;
	}
	wpos += PutByte(&buffer[wpos], count); //String count
	for(int a = 0; a < count; a++)
		wpos += PutStringUTF(&buffer[wpos], strData[a].c_str());   //String data
	PutShort(&buffer[1], wpos - 3);                 //Message size
	return wpos;
}
开发者ID:kgrubb,项目名称:iceee,代码行数:20,代码来源:Util.cpp


示例19: LoadConfig


//.........这里部分代码省略.........
			else if (strcmp(NameBlock, "SquirrelQueueSpeed") == 0)
				g_Config.SquirrelQueueSpeed = lfr.BlockToIntC(1);
			else if (strcmp(NameBlock, "PersistentBuffs") == 0)
				g_Config.PersistentBuffs = lfr.BlockToBool(1);
			else if (strcmp(NameBlock, "FallDamage") == 0)
				g_Config.FallDamage = lfr.BlockToBool(1);
			else if (strcmp(NameBlock, "PartyLoot") == 0)
				g_Config.PartyLoot = lfr.BlockToBool(1);
			else if (strcmp(NameBlock, "AccountCredits") == 0)
				g_Config.AccountCredits = lfr.BlockToBool(1);
			else if (strcmp(NameBlock, "MinPVPPlayerLootItems") == 0)
				g_Config.MinPVPPlayerLootItems = lfr.BlockToIntC(1);
			else if (strcmp(NameBlock, "MaxPVPPlayerLootItems") == 0)
				g_Config.MaxPVPPlayerLootItems = lfr.BlockToIntC(1);
			else if (strcmp(NameBlock, "NameChangeCost") == 0)
				g_Config.NameChangeCost = lfr.BlockToInt(1);
			else if (strcmp(NameBlock, "SSLVerifyPeer") == 0)
				g_Config.SSLVerifyPeer = lfr.BlockToBool(1);
			else if (strcmp(NameBlock, "SSLVerifyHostname") == 0)
				g_Config.SSLVerifyHostname = lfr.BlockToBool(1);
			else if (strcmp(NameBlock, "SMTPHost") == 0)
				g_Config.SMTPHost = lfr.BlockToStringC(1, 0);
			else if (strcmp(NameBlock, "SMTPUsername") == 0)
				g_Config.SMTPUsername = lfr.BlockToStringC(1, 0);
			else if (strcmp(NameBlock, "SMTPPassword") == 0)
				g_Config.SMTPPassword = lfr.BlockToStringC(1, 0);
			else if (strcmp(NameBlock, "SMTPPort") == 0)
				g_Config.SMTPPort = lfr.BlockToInt(1);
			else if (strcmp(NameBlock, "SMTPSSL") == 0)
				g_Config.SMTPSSL = lfr.BlockToBool(1);
			else if (strcmp(NameBlock, "SMTPSender") == 0)
				g_Config.SMTPSender = lfr.BlockToStringC(1, 0);
			else if (strcmp(NameBlock, "LegacyAccounts") == 0)
				g_Config.LegacyAccounts = lfr.BlockToBool(1);
			else if (strcmp(NameBlock, "PublicAPI") == 0)
				g_Config.PublicAPI = lfr.BlockToBool(1);
			else if (strcmp(NameBlock, "DirectoryListing") == 0)
				g_Config.DirectoryListing = lfr.BlockToBool(1);
			else if (strcmp(NameBlock, "HTTPKeepAlive") == 0)
				g_Config.HTTPKeepAlive = lfr.BlockToBool(1);
			else if (strcmp(NameBlock, "HTTPServeAssets") == 0)
				g_Config.HTTPServeAssets = lfr.BlockToBool(1);
			else if (strcmp(NameBlock, "LegacyServer") == 0)
				g_Config.LegacyServer = lfr.BlockToStringC(1, 0);
			else if (strcmp(NameBlock, "SiteServiceUsername") == 0)
				g_Config.SiteServiceUsername = lfr.BlockToStringC(1, 0);
			else if (strcmp(NameBlock, "SiteServicePassword") == 0)
				g_Config.SiteServicePassword = lfr.BlockToStringC(1, 0);
			else if (strcmp(NameBlock, "APIAuthentication") == 0)
				g_Config.APIAuthentication = lfr.BlockToStringC(1, 0);
			else if (strcmp(NameBlock, "OAuth2Client") == 0) {
				if(!oauthSet) {
					oauthSet = true;
					g_Config.OAuth2Clients.clear();
				}
				STRINGLIST output;
				Util::Split(lfr.BlockToString(1), "|", output);
				if (output.size() == 3) {
					OAuth2Client *c = new OAuth2Client();
					c->ClientId = output[0];
					c->ClientSecret = output[1];
					c->RedirectURL = output[2];
					g_Config.OAuth2Clients.push_back(c);
				} else {
					g_Logs.data->error("Invalid OAuth2Client string [%v] in config file [%v]",
							lfr.BlockToString(0), filename);
				}
			} else if (strcmp(NameBlock, "Clans") == 0)
				g_Config.Clans = lfr.BlockToBool(1);
			else if (strcmp(NameBlock, "ClanCost") == 0)
				g_Config.ClanCost = lfr.BlockToInt(1);
			else if (strcmp(NameBlock, "MaxAuctionHours") == 0)
				g_Config.MaxAuctionHours = lfr.BlockToInt(1);
			else if (strcmp(NameBlock, "MinAuctionHours") == 0)
				g_Config.MinAuctionHours = lfr.BlockToInt(1);
			else if (strcmp(NameBlock, "MinAuctionHours") == 0)
				g_Config.PercentageCommisionPerHour = lfr.BlockToFloatC(1);
			else if (strcmp(NameBlock, "MaxAuctionExpiredHours") == 0)
				g_Config.MaxAuctionExpiredHours = lfr.BlockToInt(1);
			else if (strcmp(NameBlock, "ShutdownHandlerScript") == 0)
				g_Config.ShutdownHandlerScript = lfr.BlockToStringC(1, 0);
			else if (strcmp(NameBlock, "MaxNewCreditShopItemDays") == 0)
				g_Config.MaxNewCreditShopItemDays = lfr.BlockToFloatC(1);
			else if (strcmp(NameBlock, "StaticDataPath") == 0)
				g_Config.StaticDataPath = lfr.BlockToStringC(1, 0);
			else if (strcmp(NameBlock, "VariableDataPath") == 0)
				g_Config.VariableDataPath = lfr.BlockToStringC(1, 0);
			else if (strcmp(NameBlock, "TmpDataPath") == 0)
				g_Config.TmpDataPath = lfr.BlockToStringC(1, 0);
			else if (strcmp(NameBlock, "LogPath") == 0)
				g_Config.LogPath = lfr.BlockToStringC(1, 0);
			else {
				g_Logs.data->error("Unknown identifier [%v] in config file [%v]",
						lfr.BlockToString(0), filename);
			}
		}
	}
	lfr.CloseCurrent();
	return true;
}
开发者ID:rockfireredmoon,项目名称:iceee,代码行数:101,代码来源:Config.cpp


示例20: OpenThread

void IGFManager :: OpenThread(int threadID, int startPost, int requestedCount, MULTISTRING &output)
{
	IGFThread *thread = GetPagedThreadPtr(threadID);
	if(thread == NULL)
		return;

	startPost = Util::ClipInt(startPost, 0, thread->mPostList.size() - 1);

	STRINGLIST row;

	//We retrieve the time offset since the first session since the client uses
	//4 byte integers which theoretically may not be large enough to hold the time data.
	unsigned long timeOffset = g_PlatformTime.getAbsoluteMinutes();

	//Prepare the header
	row.push_back(ConvertInteger(threadID));  //[0]
	row.push_back(thread->mTitle);   //[1]
	row.push_back(ConvertInteger(startPost));  //[2]
	row.push_back(ConvertInteger(thread->mPostList.size()));  //[3]
	row.push_back(ConvertInteger(timeOffset - thread->mLastUpdateTime));  //[4]
	output.push_back(row);
	row.clear();

	//Append the post data.
	int count = 0;
	for(size_t i = startPost; i < thread->mPostList.size(); i++)
	{
		IGFPost *post = GetPagedPostPtr(thread->mPostList[i]);
		if(post == NULL)
		{
			g_Logs.data->error("OpenThread: unable to find post: %v", thread->mPostList[i]);
			continue;
		}

		row.push_back(ConvertInteger(post->mID));  //[0]
		row.push_back(post->mCreatorName.c_str());  //[1]
		row.push_back(post->mCreationTime.c_str());  //[2]
		row.push_back(ConvertInteger(timeOffset - post->mPostedTime)); //[3]
		row.push_back(post->mBodyText.c_str());  //[4]
		row.push_back(ConvertInteger(post->mEditCount)); //[5]
		row.push_back(ConvertInteger(timeOffset - post->mLastUpdateTime)); //[6]

		output.push_back(row);
		row.clear();

		if(++count >= requestedCount)
			break;
	}
}
开发者ID:kgrubb,项目名称:iceee,代码行数:49,代码来源:IGForum.cpp



注:本文中的STRINGLIST类示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
C++ STRING_LIST类代码示例发布时间:2022-05-31
下一篇:
C++ STRING类代码示例发布时间:2022-05-31
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap