Beispiel #1
0
void ansicap(char *str)
{
	char *p = str;

	while(*p != '\0')
	{
		if(*p == '&')
		{
			p++;
			switch(*p)
			{
			case '\0': return;
			case '+':
			case '-':
				p++; if(*p == '\0') return;
				p++; if(*p == '\0') return;
				*p = Upper(*p);
				return;
			case '=':
				p++; if(*p == '\0') return;
				p++; if(*p == '\0') return;
				p++; if(*p == '\0') return;
				*p = Upper(*p);
				return;
			default: return;
			}
		}
		if(isalpha(*p))
		{
			*p = Upper(*p);
			return;
		}
		p++;
	}
}
nsresult
IDBKeyRange::BindToStatement(mozIStorageStatement* aStatement) const
{
  MOZ_ASSERT(aStatement);

  NS_NAMED_LITERAL_CSTRING(lowerKey, "lower_key");

  if (IsOnly()) {
    return Lower().BindToStatement(aStatement, lowerKey);
  }

  nsresult rv;

  if (!Lower().IsUnset()) {
    rv = Lower().BindToStatement(aStatement, lowerKey);
    if (NS_WARN_IF(NS_FAILED(rv))) {
      return rv;
    }
  }

  if (!Upper().IsUnset()) {
    rv = Upper().BindToStatement(aStatement, NS_LITERAL_CSTRING("upper_key"));
    if (NS_WARN_IF(NS_FAILED(rv))) {
      return rv;
    }
  }

  return NS_OK;
}
Beispiel #3
0
int CGDstrnicmp (const char*s1,const char*s2,int iLen)
{
	if(!iLen)
	{
		return 0;
	}

	while(s1[0])
	{
		unsigned char c1 = Upper((unsigned char)s1[0]);
		unsigned char c2 = Upper((unsigned char)s2[0]);

		if(c1 !=c2)
		{
			return 1;//who cares 1/-1, important is match/nonmatch
		}
		s1++;
		s2++;
		iLen--;
		if(!iLen)
		{
			return 0;
		}
	}
	return (unsigned char)s2[0]>0;
}
Beispiel #4
0
SqlBool GetTextRange(const String& s1, const String& s2, const SqlVal& exp)
{
    if(IsNull(s1) && IsNull(s2))
        return SqlBool();
    if(IsNull(s1) || IsNull(s2)) // just one - use as template
        return LikeSmartWild(exp, s1 + s2);
//	return Between(GetCsAsciiVal(exp), GetCsAsciiVal(s1), GetCsAsciiVal(s2 + "ŽŽ"));
    return Between(UpperAscii(exp), Upper(s1), Upper(s2 + "ZZ"));
}
Beispiel #5
0
local void upward_pass(kdxptr kd, int cell)
{
  kdnode *ntab = kd->ntab;

  if (ntab[cell].dim != -1) {			// not a terminal node?
    upward_pass(kd, Lower(cell));
    upward_pass(kd, Upper(cell));
    combine_nodes(&ntab[cell], &ntab[Lower(cell)], &ntab[Upper(cell)]);
  } else					// scan bodies in node
    set_bounds(&ntab[cell].bnd, kd->bptr, ntab[cell].first, ntab[cell].last);
}
Beispiel #6
0
void PrepareStrFTime()
{
	DWORD Loc[]={LANG_ENGLISH,LANG_NEUTRAL},ID;

	GetLocaleInfo(LOCALE_USER_DEFAULT,LOCALE_IFIRSTDAYOFWEEK|LOCALE_RETURN_NUMBER,reinterpret_cast<LPWSTR>(&WeekFirst),sizeof(WeekFirst)/sizeof(WCHAR));

	for (int i=0; i<2; i++)
	{
		LCID CurLCID=MAKELCID(MAKELANGID(Loc[i],SUBLANG_DEFAULT),SORT_DEFAULT);

		for (ID=LOCALE_SMONTHNAME1; ID<=LOCALE_SMONTHNAME12; ID++)
		{
			int size=GetLocaleInfo(CurLCID,ID,nullptr,0);
			LPWSTR lpwszTemp=Month[i][ID-LOCALE_SMONTHNAME1].GetBuffer(size);
			GetLocaleInfo(CurLCID,ID,lpwszTemp,size);
			*lpwszTemp=Upper(*lpwszTemp);
			Month[i][ID-LOCALE_SMONTHNAME1].ReleaseBuffer();
		}

		for (ID=LOCALE_SABBREVMONTHNAME1; ID<=LOCALE_SABBREVMONTHNAME12; ID++)
		{
			int size=GetLocaleInfo(CurLCID,ID,nullptr,0);
			LPWSTR lpwszTemp=AMonth[i][ID-LOCALE_SABBREVMONTHNAME1].GetBuffer(size);
			GetLocaleInfo(CurLCID,ID,lpwszTemp,size);
			*lpwszTemp=Upper(*lpwszTemp);
			AMonth[i][ID-LOCALE_SABBREVMONTHNAME1].ReleaseBuffer();
		}

		for (ID=LOCALE_SDAYNAME1; ID<=LOCALE_SDAYNAME7; ID++)
		{
			int size=GetLocaleInfo(CurLCID,ID,nullptr,0);
			LPWSTR lpwszTemp=Weekday[i][ID-LOCALE_SDAYNAME1].GetBuffer(size);
			GetLocaleInfo(CurLCID,ID,lpwszTemp,size);
			*lpwszTemp=Upper(*lpwszTemp);
			Weekday[i][ID-LOCALE_SDAYNAME1].ReleaseBuffer();
		}

		for (ID=LOCALE_SABBREVDAYNAME1; ID<=LOCALE_SABBREVDAYNAME7; ID++)
		{
			int size=GetLocaleInfo(CurLCID,ID,nullptr,0);
			LPWSTR lpwszTemp=AWeekday[i][ID-LOCALE_SABBREVDAYNAME1].GetBuffer(size);
			GetLocaleInfo(CurLCID,ID,lpwszTemp,size);
			*lpwszTemp=Upper(*lpwszTemp);
			AWeekday[i][ID-LOCALE_SABBREVDAYNAME1].ReleaseBuffer();
		}
	}

	CurLang=0;
}
Beispiel #7
0
SqlBool LikeSmartWild(const SqlVal& exp, const String& text)
{
    const char *s = text;
    if(*s == 0)
        return SqlBool::True();
    if((*s == '.' && s[1] != 0 && *++s != '.') || HasNlsLetters(WString(s)))
    {
        SqlBool e = Like(Upper(exp), Wild(ToUpper(s)));
        if(ToUpper((byte)*s) == 'C' && s[1] == 0)
            e &= NotLike(Upper(exp), "CH%"); // CH patch
        return e;
    }
    else
        return LikeUpperAscii(exp, Wild(s));
}
Beispiel #8
0
void build_kdtree(kdxptr kd, int nbucket)
{
    int k, n, i, d, m, j, ct;
    kdnode *ntab;

    n = kd->ngas;
    k = 1;
    while (n > nbucket) {
	n = n>>1;
	k = k<<1;
    }
    kd->nnode = k<<1;
    kd->nsplit = k;
    ntab = kd->ntab = (kdnode *) allocate(kd->nnode * sizeof(kdnode));
    ntab[KDROOT].first = 0;			/* initialize root node	    */
    ntab[KDROOT].last = kd->ngas-1;
    ntab[KDROOT].bnd = kd->bnd;
    i = KDROOT;
    ct = KDROOT;
    SetNext(ct);
    for ( ; ; ) {				/* loop splitting nodes	    */
	if (i < kd->nsplit) {
	    d = 0;				/* find longest dimension   */
	    for (j=1; j<3; ++j) {
		if (ntab[i].bnd.maxb[j]-ntab[i].bnd.minb[j] > 
		      ntab[i].bnd.maxb[d]-ntab[i].bnd.minb[d])
		    d = j;
	    }
	    m = median_index(kd->bptr, d, ntab[i].first, ntab[i].last);
	    ntab[i].dim = d;
	    ntab[i].split = Pos(kd->bptr[m])[d];
	    ntab[Lower(i)].bnd = ntab[i].bnd;
	    ntab[Lower(i)].bnd.maxb[d] = ntab[i].split;
	    ntab[Lower(i)].first = ntab[i].first;
	    ntab[Lower(i)].last = m-1;
	    ntab[Upper(i)].bnd = ntab[i].bnd;
	    ntab[Upper(i)].bnd.minb[d] = ntab[i].split;
	    ntab[Upper(i)].first = m;
	    ntab[Upper(i)].last = ntab[i].last;
	    i = Lower(i);
	} else {
	    ntab[i].dim = -1;
	    SetNext(i);
	    if (i == ct) break;
	}
    }
    upward_pass(kd, KDROOT);
}
char* _NativeFrameworkDSString::toUpperCase(){
	for_each(
		variableString.begin(),
		variableString.end(),
		Upper());
	return (char*)variableString.c_str();
}
Beispiel #10
0
static void SomeCut(This *t, Cut *cut, Bounds *b)
{
  count dim, maxdim;
  static count nextdim = 0;
  real xmid[NDIM], ymid, maxdev;

  for( dim = 0; dim < t->ndim; ++dim )
    xmid[dim] = .5*(b[dim].upper + b[dim].lower);
  ymid = Sample(t, xmid);

  maxdev = 0;
  maxdim = 0;
  for( dim = 0; dim < t->ndim; ++dim ) {
    real ylower, yupper, dev;
    creal x = xmid[dim];
    xmid[dim] = b[dim].lower;
    ylower = Sample(t, xmid);
    xmid[dim] = b[dim].upper;
    yupper = Sample(t, xmid);
    xmid[dim] = x;

    dev = fabs(ymid - .5*(ylower + yupper));
    if( dev >= maxdev ) {
      maxdev = dev;
      maxdim = dim;
    }
  }

  if( maxdev > 0 ) nextdim = 0;
  else maxdim = nextdim++ % t->ndim;

  cut->i = Upper(maxdim);
  cut->save = b[maxdim].upper;
  b[maxdim].upper = xmid[maxdim];
}
Beispiel #11
0
unsigned __int64 ConvertFileSizeString(const wchar_t *FileSizeStr)
{
	if (!CheckFileSizeStringFormat(FileSizeStr))
		return 0;

	unsigned __int64 n = _wtoi64(FileSizeStr);
	wchar_t c = Upper(FileSizeStr[StrLength(FileSizeStr)-1]);

	// http://en.wikipedia.org/wiki/SI_prefix
	switch (c)
	{
		case L'K':		// kilo 10x3
			n <<= 10;
			break;
		case L'M':		// mega 10x6
			n <<= 20;
			break;
		case L'G':		// giga 10x9
			n <<= 30;
			break;
		case L'T':		// tera 10x12
			n <<= 40;
			break;
		case L'P':		// peta 10x15
			n <<= 50;
			break;
		case L'E':		// exa  10x18
			n <<= 60;
			break;
			// Z - zetta 10x21
			// Y - yotta 10x24
	}

	return n;
}
Beispiel #12
0
static inline void SolveEqs(Cut *cut, count ncut,
  creal *delta, creal diff)
{
  real last = 0;
  real r = 1;
  Cut *c;

  for( c = cut; ; ++c ) {
    ccount dim = Dim(c->i);
    c->row = r -=
      Div(diff, (delta[Lower(dim)] + delta[Upper(dim)])*c->df);
    if( --ncut == 0 ) break;
    last += r*c->lhs;
  }

  last = Div(c->lhs - last, r);

  for( ; c >= cut; last += (--c)->lhs ) {
    creal delmin = -(c->delta = delta[c->i]);
    creal delmax = FRACT*(delmin + c->save);
    c->sol = Div(last, c->df);
    if( c->sol > delmax ) c->sol = .75*delmax;
    if( c->sol < delmin ) c->sol = .75*delmin;
  }
}
Beispiel #13
0
/**
 * @brief See if there are any monsters in players LOS. If so, take note.
 */
void look_for_monsters()
{
        monster_t *m;

        //gtprintf("looking for monsters...");

        m = world->curlevel->monsters;
        if(!m)
                return;


        while(m) {
                m = m->next;
                while(m && hasbit(m->flags, MF_ISDEAD))
                        m = m->next;

                if(m && !hasbit(m->flags, MF_SEENBYPLAYER)) {
                        if(actor_in_lineofsight(player, m)) {
                                setbit(m->flags, MF_SEENBYPLAYER);
                                gtprintfc(COLOR_RED, "%s comes into view!", Upper(a_an(m->name)));
                                schedule_monster(m);
                        }
                }
        }
}
bool
IDBKeyRange::Includes(JSContext* aCx,
                      JS::Handle<JS::Value> aValue,
                      ErrorResult& aRv) const
{
  Key key;
  aRv = GetKeyFromJSVal(aCx, aValue, key);
  if (aRv.Failed()) {
    return false;
  }

  MOZ_ASSERT(!(Lower().IsUnset() && Upper().IsUnset()));
  MOZ_ASSERT_IF(IsOnly(),
    !Lower().IsUnset() && !LowerOpen() &&
    Lower() == Upper() && LowerOpen() == UpperOpen());

  if (!Lower().IsUnset()) {
    switch (Key::CompareKeys(Lower(), key)) {
    case 1:
      return false;
    case 0:
      // Identical keys.
      return !LowerOpen();
    case -1:
      if (IsOnly()) {
        return false;
      }
      break;
    default:
      MOZ_CRASH();
    }
  }

  if (!Upper().IsUnset()) {
    switch (Key::CompareKeys(key, Upper())) {
    case 1:
      return false;
    case 0:
      // Identical keys.
      return !UpperOpen();
    case -1:
      break;
    }
  }

  return true;
}
Beispiel #15
0
char *capitalize(char *str)
{
	static char buf[MAX_BUFFER];

	sprintf(buf,"%s",str);
	buf[0] = Upper(buf[0]);
	return buf;
}
Beispiel #16
0
static inline real Volume(cThis *t, creal *delta)
{
  real vol = 1;
  count dim;
  for( dim = 0; dim < t->ndim; ++dim )
    vol *= delta[Lower(dim)] + delta[Upper(dim)];
  return vol;
}
/*
	函数功能:将字符串转化成16进制数据
	参数:str,输入的字符串
	参数:hex输出的16进制数据
	参数:maxsize,hex的最大缓冲区
	返回值:转化成功后的16进制数据的长度
*/
int CharToHex(unsigned char *str,unsigned char *hex,int maxsize)
{
	unsigned char *p = str;
	unsigned char *dst = hex;

	int  i = 0;
	//转换成大写
	Upper(str);

	while( *p )
	{

		if( (*p >= 'A') && (*p <= 'F') )
		{
			*dst = (*p - 55) << 4;
		}
		else if( (*p >= '0') && (*p <= '9') )
		{
			*dst = (*p - 48) << 4;
		}
		else
		{
			//printf("Error,there has a %c,is not a hex!\n",*p);
			break;
		}

		p++;

		if( 0x0 == *p )
		{
			i++;
			break;
		}

		if( (*p >= 'A') && (*p <= 'F') )
		{
			*dst |= (*p - 55);
		}
		else if( (*p >= '0') && (*p <= '9') )
		{
			*dst |= (*p - 48);
		}
		else
		{
			//printf("Error,there has a %c,is not a hex!\n",*p);
			break;
		}

		dst++;

		if(++i >= maxsize)
			break;

		p++;
	}
	
	return i;
}
Beispiel #18
0
local void ball_search(smxptr sm, real r2ball, real *ri)
{
    kdnode *ntab = sm->kd->ntab;
    bodyptr *bptr = sm->kd->bptr;
    pqnode *pq = sm->pqhead;
    int cell, cp, ct, pj;
    real dist2;

    cell = KDROOT;                              /* start at root of tree    */
    while (cell < sm->kd->nsplit) {             /* descend to local bucket  */
        if (ri[ntab[cell].dim] < ntab[cell].split)
            cell = Lower(cell);
        else
            cell = Upper(cell);
    }
    for (pj = ntab[cell].first; pj <= ntab[cell].last; ++pj)
	if (! InQue(bptr[pj])) {		/* in bucket, but not que?  */
	    DISTSQV(dist2, ri, Pos(bptr[pj]));  /* compute dist^2 to center */
	    if (dist2 < r2ball) {		/* within current ball?     */
		ClrFlag(bptr[pq->pind], INQUE);	/* drop furthest from que   */
		SetFlag(bptr[pj], INQUE);	/* and add this one to que  */
		pq->pqkey = dist2;              /* store its distance       */
		pq->pind = pj;                  /* and its index            */
		PQReplace(pq);                  /* move to rightful place   */
		r2ball = pq->pqkey;             /* adopt new search radius  */
	    }
	}
    while (cell != KDROOT) {			/* scan back toward root    */
        cp = Sibling(cell);
        ct = cp;
        SetNext(ct);
	do {
            Intersect(ntab[cp], r2ball, ri, GetNextCell);
						/* got intersection to test */
            if (cp < sm->kd->nsplit) {          /* not yet down to bucket?  */
                cp = Lower(cp);
                continue;
            } else                              /* scan bucket for winners  */
                for (pj = ntab[cp].first; pj <= ntab[cp].last; ++pj)
		    if (! InQue(bptr[pj])) {	/* not already in the que?  */
			DISTSQV(dist2, ri, Pos(bptr[pj]));
			if (dist2 < r2ball) {	/* but within current ball? */
			    ClrFlag(bptr[pq->pind], INQUE);
			    SetFlag(bptr[pj], INQUE);
			    pq->pqkey = dist2;
			    pq->pind = pj;
			    PQReplace(pq);
			    r2ball = pq->pqkey;
			}
		    }
          GetNextCell:
            SetNext(cp);
        } while (cp != ct);
        cell = Parent(cell);			/* climb down towards root  */
    }
    sm->pqhead = pq;
}
Beispiel #19
0
void
cnvtup(char *str)
{
  int         i,
              n;

  n = strlen(str);
  for (i = 0; i < n; i++)
    str[i] = Upper((int)str[i]);
}
Beispiel #20
0
void main(void)
{
 char *res;
 char source[]="Ligne de TEXTE �����������������������";
 char corres[]="LIGNE DE TEXTE AAAAAEEEEIIIOOOOUUUUYCN";
 res=Upper(source,'\0');
 printf("Source         = %s\n",source);
 printf("Correspondance = %s\n",corres);
 printf("Resultat       = %s\n",res);
 free(res);
}
void
IDBKeyRange::ToSerialized(SerializedKeyRange& aKeyRange) const
{
  aKeyRange.lowerOpen() = LowerOpen();
  aKeyRange.upperOpen() = UpperOpen();
  aKeyRange.isOnly() = IsOnly();

  aKeyRange.lower() = Lower();
  if (!IsOnly()) {
    aKeyRange.upper() = Upper();
  }
}
Beispiel #22
0
int HMenu::CheckHighlights(WORD CheckSymbol,int StartPos)
{
	CriticalSectionLock Lock(CS);

	if (StartPos < 0)
		StartPos=0;

	for (int I=StartPos; I < ItemCount; I++)
	{
		wchar_t Ch=GetHighlights((const HMenuData *)(Item+I));

		if (Ch)
		{
			if (Upper(CheckSymbol) == Upper(Ch))
				return I;
		}
		else if (!CheckSymbol)
			return I;
	}

	return -1;
}
Beispiel #23
0
string ReplaceBrackets(const string& SearchStr,const string& ReplaceStr,RegExpMatch* Match,int Count)
{
	string result;
	size_t pos=0,length=ReplaceStr.GetLength();

	while (pos<length)
	{
		bool common=true;

		if (ReplaceStr[pos]=='$')
		{
			++pos;

			if (pos>length) break;

			wchar_t symbol=Upper(ReplaceStr[pos]);
			int index=-1;

			if (symbol>='0'&&symbol<='9')
			{
				index=symbol-'0';
			}
			else if (symbol>='A'&&symbol<='Z')
			{
				index=symbol-'A'+10;
			}

			if (index>=0)
			{
				if (index<Count)
				{
					string bracket(SearchStr.CPtr()+Match[index].start,Match[index].end-Match[index].start);
					result+=bracket;
				}

				common=false;
			}
		}

		if (common)
		{
			result+=ReplaceStr[pos];
		}

		++pos;
	}

	return result;
}
Beispiel #24
0
wxString Letter(const wxString & text)
{
	size_t count = text.Len();
	for (size_t i = 0; i < count; i++) {
		wxChar ch = text[i];
		if (IsAlpha(ch)) {
			wxString res = Upper(ch);
			if (res == wxChar(0x401)) res = wxChar(0x415);
			return res;
		} else if (IsNumeric(ch)) {
			return wxT('#');
		}
	}
	return wxT('#');
}
Beispiel #25
0
bool
IDBKeyRange::Includes(JSContext* aCx,
                      JS::Handle<JS::Value> aValue,
                      ErrorResult& aRv) const
{
  Key key;
  aRv = GetKeyFromJSVal(aCx, aValue, key);
  if (aRv.Failed()) {
    return false;
  }

  switch (Key::CompareKeys(Lower(), key)) {
  case 1:
    return false;
  case 0:
    // Identical keys.
    if (LowerOpen()) {
      return false;
    }
    break;
  case -1:
    if (IsOnly()) {
      return false;
    }
    break;
  default:
    MOZ_CRASH();
  }

  if (!IsOnly()) {
    switch (Key::CompareKeys(key, Upper())) {
    case 1:
      return false;
    case 0:
      // Identical keys.
      if (UpperOpen()) {
        return false;
      }
      break;
    case -1:
      break;
    }
  } else {
    MOZ_ASSERT(key == Lower());
  }

  return true;
}
Beispiel #26
0
void WordToken::SetFirstInSentence(bool b) {
  //  std::cout << "sf " << string << std::endl;
  char st[MAX_WORD_LENGTH];
  firstInSentence = b;
  if (b) {
    if (IsUpper(*string)) 
      return;
    *st = Upper(*string);
  } else {
    if (IsLower(*string))
      return;
    *st = Lower(*string);
  }
  strcpy(st+1, string+1);      
  SetWord(word, st, token);
}
Tipo_NombreCampos *LeeNombreCampos(int id,char szTabla[])
{
       char szSql[300];
       int sts,i;
       char szTmp[50];
       char szAux[120];
       Tipo_XML *xml1=NULL;
       Tipo_NombreCampos *pName=NULL,*pAux,*pNameCampo=NULL;
       xml1=GetCamposDatabase(id,&sts,szTabla);
       if (sts==ERROR_BASE) {printf("Error en la Base\n\r"); xml1=CierraXML(xml1); return NULL;}
       if (sts==NO_HAY_DATOS) {printf("No hay datos\n\r"); xml1=CierraXML(xml1); return NULL;}

       i=0;
       while (1)
       {
       	   sprintf(szTmp,"CAMPO%i",i);
	   if (GetStrXML(xml1,szTmp,szAux,sizeof(szAux)))
	   {
		 pName=(Tipo_NombreCampos *)malloc(sizeof(Tipo_NombreCampos));
		 pName->pNext=NULL;
       		 Upper(szAux);
		 sprintf(pName->szNombre,"%s",szAux);
           	 i++;
           	 sprintf(szTmp,"CAMPO%i",i);
		 if (pNameCampo==NULL)
		 {
			 pNameCampo=pName;
			 pAux = pName;
		 }
		 else
		 {
			 pAux->pNext=pName;
			 pAux = pName;
		 }
	   }
	   else break;
       }
       CloseDatabase(id);
       xml1=CierraXML(xml1);
       return pNameCampo;
}
//=============================================================================
int Epetra_SerialSymDenseMatrix::Scale(double ScalarA) {

  int i, j;

  double * ptr;

  if (!Upper()) {
    for (j=0; j<N_; j++) {
      ptr = A_ + j + j*LDA_;
      for (i=j; i<N_; i++) {*ptr = *ptr * ScalarA; ptr++;}
    }
  }
  else {
    for (j=0; j<N_; j++) {
      ptr = A_ + j*LDA_;
      for (i=0; i<j; i++) {*ptr = *ptr * ScalarA; ptr++;}
    }
  }
  UpdateFlops(N_*(N_+1)/2);
  return(0);
}
void
IDBKeyRange::GetUpper(JSContext* aCx, JS::MutableHandle<JS::Value> aResult,
                      ErrorResult& aRv)
{
  AssertIsOnOwningThread();

  if (!mHaveCachedUpperVal) {
    if (!mRooted) {
      mozilla::HoldJSObjects(this);
      mRooted = true;
    }

    aRv = Upper().ToJSVal(aCx, mCachedUpperVal);
    if (aRv.Failed()) {
      return;
    }

    mHaveCachedUpperVal = true;
  }

  aResult.set(mCachedUpperVal);
}
void
IDBKeyRange::GetBindingClause(const nsACString& aKeyColumnName,
                              nsACString& _retval) const
{
  NS_NAMED_LITERAL_CSTRING(andStr, " AND ");
  NS_NAMED_LITERAL_CSTRING(spacecolon, " :");
  NS_NAMED_LITERAL_CSTRING(lowerKey, "lower_key");

  if (IsOnly()) {
    // Both keys are set and they're equal.
    _retval = andStr + aKeyColumnName + NS_LITERAL_CSTRING(" =") +
              spacecolon + lowerKey;
    return;
  }

  nsAutoCString clause;

  if (!Lower().IsUnset()) {
    // Lower key is set.
    clause.Append(andStr + aKeyColumnName);
    clause.AppendLiteral(" >");
    if (!LowerOpen()) {
      clause.Append('=');
    }
    clause.Append(spacecolon + lowerKey);
  }

  if (!Upper().IsUnset()) {
    // Upper key is set.
    clause.Append(andStr + aKeyColumnName);
    clause.AppendLiteral(" <");
    if (!UpperOpen()) {
      clause.Append('=');
    }
    clause.Append(spacecolon + NS_LITERAL_CSTRING("upper_key"));
  }

  _retval = clause;
}