ReactOS  0.4.14-dev-57-g333b8f1
Completion.h File Reference
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Macros

#define COMPLETION_H__INCLUDED_
 

Typedefs

typedef const TCHAR *(* ReplaceCompletionCallback) (unsigned __int64 &rnIndex, const BOOL *pblnForward, const TCHAR *pchContext, const TCHAR *pchBegin)
 

Functions

const TCHARCompletionCallback (unsigned __int64 &rnIndex, const BOOL *pblnForward, const TCHAR *pchContext, const TCHAR *pchBegin)
 
void InvalidateCompletion ()
 

Macro Definition Documentation

◆ COMPLETION_H__INCLUDED_

#define COMPLETION_H__INCLUDED_

Definition at line 5 of file Completion.h.

Typedef Documentation

◆ ReplaceCompletionCallback

typedef const TCHAR*(* ReplaceCompletionCallback) (unsigned __int64 &rnIndex, const BOOL *pblnForward, const TCHAR *pchContext, const TCHAR *pchBegin)

Definition at line 7 of file Completion.h.

Function Documentation

◆ CompletionCallback()

const TCHAR* CompletionCallback ( unsigned __int64 rnIndex,
const BOOL pblnForward,
const TCHAR pchContext,
const TCHAR pchBegin 
)

Definition at line 439 of file Completion.cpp.

443 {
444  static TCHAR pszBuffer[COMPLETION_BUFFER_SIZE];
445 
446  // Find first non-white space in context
447  while(*pszContext && _istspace(*pszContext))
448  pszContext++;
449 
450  BOOL blnNewCompletion = TRUE;
451  if (!g_Completion.IsNewCompletion(pszContext,pszBegin,blnNewCompletion))
452  {
453  ASSERT(FALSE);
454  return NULL;
455  }
456 
457  if (blnNewCompletion)
458  {
459  _tcsncpy(pszBuffer,pszBegin,COMPLETION_BUFFER_SIZE-1);
460  pszBuffer[COMPLETION_BUFFER_SIZE-1] = 0;
461  TCHAR *pszSeparator = pszBuffer; // set it to aby non null value
462  if (_tcscmp(pszBuffer,_T("\\")))
463  {
464  pszSeparator = _tcsrchr(pszBuffer,_T('\\'));
465  if (pszSeparator)
466  *pszSeparator = 0;
467  }
468 
469  if (!FillCompletion(pszSeparator?pszBuffer:NULL))
470  return NULL;
471  }
472 
473  unsigned __int64 nTotalItems = g_Completion.GetCount();
474  if (nTotalItems == 0)
475  return NULL;
476 
477  if (rnIndex >= nTotalItems)
478  rnIndex = nTotalItems-1;
479 
480  if (pblnForward)
481  {
482  if (*pblnForward)
483  {
484  rnIndex++;
485  if (rnIndex >= nTotalItems)
486  {
488  rnIndex = 0;
489  else
490  rnIndex--;
491  }
492  }
493  else
494  {
495  if (rnIndex)
496  rnIndex--;
497  else if (g_blnCompletionCycle)
498  rnIndex = nTotalItems-1;
499  }
500  }
501  BOOL blnIsKey = FALSE;
502  const TCHAR *pszName = g_Completion.Get(rnIndex,blnIsKey);
503 
504  ASSERT(pszName);
505 
506  _sntprintf(pszBuffer,COMPLETION_BUFFER_SIZE-1,_T("%s%s"),pszName,(blnIsKey?_T("\\"):_T("")));
507  pszBuffer[COMPLETION_BUFFER_SIZE-1] = 0;
508  return pszBuffer;
509 }
#define TRUE
Definition: types.h:120
int _tcscmp(const _TCHAR *s1, const _TCHAR *s2)
Definition: tcscmp.h:8
const TCHAR * Get(unsigned __int64 nIndex, BOOL &rblnIsKey)
Definition: Completion.cpp:249
_TCHAR * _tcsncpy(_TCHAR *dst, const _TCHAR *src, size_t n)
Definition: tcsncpy.h:9
BOOL IsNewCompletion(const TCHAR *pszContext, const TCHAR *pszBegin, BOOL &rblnNew)
Definition: Completion.cpp:149
BOOL g_blnCompletionCycle
Definition: Completion.cpp:31
#define COMPLETION_BUFFER_SIZE
Definition: Completion.cpp:27
BOOL FillCompletion(const TCHAR *pszKey)
Definition: Completion.cpp:332
unsigned int BOOL
Definition: ntddk_ex.h:94
smooth NULL
Definition: ftsmooth.c:416
class CCompletionList g_Completion
char TCHAR
Definition: xmlstorage.h:189
#define _T(x)
Definition: vfdio.h:22
unsigned __int64 GetCount()
Definition: Completion.cpp:301
ASSERT((InvokeOnSuccess||InvokeOnError||InvokeOnCancel) ?(CompletionRoutine !=NULL) :TRUE)
#define _sntprintf
Definition: xmlstorage.h:201
_TCHAR * _tcsrchr(const _TCHAR *s, _XINT c)
Definition: tcsrchr.h:4
#define _istspace
Definition: tchar.h:1504
#define __int64
Definition: basetyps.h:16

Referenced by co_IntCallSentMessageCallback(), co_IntSendMessageWithCallBack(), co_MsqSendMessageAsync(), and main().

◆ InvalidateCompletion()

void InvalidateCompletion ( )