Esempio n. 1
0
/* giveString - returns a pointer to the string from a token. If token is not 
     T_STRING, it generates new string, converts token to it, then returns
	 its pointer. Use to prevent copying of long strings, when read-only access
	 is needed. 
	 Usage note: when string is small (regex, filename, ...), use:
		string value = *giveString(token); 
	 When string MAY be large and we don't change it (pos, substr, 
	 fwrite, writefile, ...), use: 
		StringPtr value = giveString(token); */
StringPtr giveString(const Token& token) {
	Token newToken;
	switch (token.tokenType) {
	case T_VARIABLE:
		newToken = token;
		recurseVariables(newToken);
		return giveString(newToken);
		break;
	case T_STRING:
		return token.asString;
		break;
	case T_EMPTY:
		return StringPtr(new string("")); 
		break;
	case T_INTEGER: {
		StringPtr result = StringPtr(new string);
		toString(token.data.asInteger, *result);
		return result; }
		break;
	case T_FLOAT: {
		StringPtr result = StringPtr(new string);
		toString(token.data.asFloat, *result);
		return result; }
		break;
	case T_BOOL:
		return StringPtr(new string(token.data.asBool ? "TRUE" : "FALSE"));
		break;
	default:
		stringstream ExceptionText;
		ExceptionText << "Cannot convert token to string";
		throw StutskException(ET_ERROR, ExceptionText.str());
	}
}
Esempio n. 2
0
StringPtr String::insert(StringParam substr, size_t beforeIndex) {
	const size_t	myLength= length();
	
	if(beforeIndex == 0) {
		return JoinString::create(substr, StringPtr(this));
	} else if(myLength == beforeIndex) {
		return JoinString::create(StringPtr(this), substr);
	}
	return JoinString::create(JoinString::create(substring(0, beforeIndex), substr), substring(beforeIndex));
}
Esempio n. 3
0
StringPtr String::remove(size_t offset, size_t removalLength) {
	if(0 == offset) {
		return SubString::create(StringPtr(this), removalLength);
	} else if(offset + removalLength == length()) {
		return SubString::create(StringPtr(this), 0, offset);
	}
	return JoinString::create(
				SubString::create(StringPtr(this), 0, offset),
				SubString::create(StringPtr(this), offset + removalLength)
			);
}
Esempio n. 4
0
static StringPtr get_string(const std::string* sp) {
   static bool s_defined = false;
   static std::string last_s;
   static StringPtr last_ptr;
   if (sp) {
      if (!s_defined || *sp != last_s) {
	 last_ptr = std::make_shared<std::string>(*sp);
	 last_s = *sp;
	 s_defined = true;
      }
      return last_ptr;
   } else {
      return StringPtr(nullptr);
   }
}
Esempio n. 5
0
PSDash::_void CLoginDlg::OnConnectIS( _bool bConnect, const PSUID is_id, _dword Reason, const _char *desp /*= _null*/ )
{
	GetDlgItem(IDC_BUTTON4).EnableWindow(TRUE);
	GetDlgItem(IDC_USERNAME).SetFocus();
	if(bConnect)
	{
		GetDlgItem(IDC_BUTTON4).SetWindowText(L"Disconnect");
		
		if(StringPtr(desp).Length()>0)
		AtlMessageBox(m_hWnd, desp);
		GetDlgItem(IDC_APPID).EnableWindow(FALSE);
		GetDlgItem(IDC_SUBID).EnableWindow(FALSE);
		GetDlgItem(IDC_COMBO1).EnableWindow(FALSE);

	}
	else
	{
		GetDlgItem(IDC_BUTTON4).SetWindowText(L"Connect");
		AtlMessageBox(m_hWnd, (LPCTSTR)GetFramework()->GetError(Reason));
	}
}
Esempio n. 6
0
/* getNth - returns n-th value of the array/string  */
void getNth(Token &newToken, stutskInteger i)
{
	Token tempToken = newToken; 
	if (tempToken.tokenType == T_VARIABLE) 
		recurseVariables(tempToken);
	if ((tempToken.tokenType == T_STRING) && (i >= 0)) {
		newToken.tokenType = T_STRING;
		if (i < 0)
			throw StutskException(ET_ERROR, "String index underflow");
		if (i >= (signed)tempToken.asString->length())
			throw StutskException(ET_ERROR, "String index overflow");
		newToken.asString = StringPtr(new string);
		*newToken.asString = (*tempToken.asString)[i];
	} 
	else if ((tempToken.tokenType == T_ARRAY) && (i >= 0)) {
		if (i < 0)
			throw StutskException(ET_ERROR, "Array index underflow");
		if (i >= (signed)tempToken.asTokenList->size())
			throw StutskException(ET_ERROR, "Array index overflow");
		newToken = (*tempToken.asTokenList)[i];
	}
	else
		throw StutskException(ET_ERROR, "Cannot index an object");
}
Esempio n. 7
0
	StringPtr Integer::ToString() const
	{
		return StringPtr(new String(boost::lexical_cast<std::string>(GetValue())));
	}
Esempio n. 8
0
	StringPtr UUID::ToString() const
	{
		return StringPtr(new String(ToString(*this)));
	}
Esempio n. 9
0
void DebugTool::PushLogString(CL_String * rString){
	logStack.push_front(StringPtr(rString));
	if(logStack.size() > 10){
		logStack.pop_back();
	}
}
Esempio n. 10
0
File: arena.cpp Progetto: QingYun/kj
StringPtr Arena::copyString(StringPtr content) {
  char* data = reinterpret_cast<char*>(allocateBytes(content.size() + 1, 1, false));
  memcpy(data, content.cStr(), content.size() + 1);
  return StringPtr(data, content.size());
}
Esempio n. 11
0
StringPtr String::remove(size_t offset) {
	return SubString::create(StringPtr(this), 0, offset);
}
Esempio n. 12
0
StringPtr String::append(StringParam other) {
	return JoinString::create(StringPtr(this), other);
}
Esempio n. 13
0
StringPtr String::substring(size_t offset, size_t subLength) {
	return SubString::create(StringPtr(this), offset, subLength);
}
Esempio n. 14
0
StringPtr String::substring(size_t offset) {
	return SubString::create(StringPtr(this), offset);
}