本文整理汇总了C++中Array::Count方法的典型用法代码示例。如果您正苦于以下问题:C++ Array::Count方法的具体用法?C++ Array::Count怎么用?C++ Array::Count使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Array
的用法示例。
在下文中一共展示了Array::Count方法的9个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: Array
Array(const Array& src)
{
_data=new T*[src.Count()];
int i;
for(i=0;i<src.Count();i++)
{
_data[i]=new T(src[i]);
}
_size=src.Count();
_count=_size;
_empty=0;
}
示例2: Clean
void operator=(const Array& src)
{
if(this==&src)return;
Clean();
_data=new T*[src.Count()];
int i;
for(i=0;i<src.Count();i++)
{
_data[i]=new T(src[i]);
}
_size=src.Count();
_count=_size;
}
示例3: Insert
int Insert(int index,const Array& src)
{
if(index<0)index+=_count;
if(index<0)return -1;
if(index>_count)
{
Resize(index+src.Count());
int i;
InitRange(_count,index);
for(i=0;i<src.Count();i++)
{
_data[index+i]=new T(src[i]);
}
_count=index+src.Count();
}else
{
Resize(_count+src.Count());
Copy(index,index+src.Count(),src.Count());
int i;
for(i=0;i<src.Count();i++)
{
_data[index+i]=new T(src[i]);
}
_count+=src.Count();
}
return _count;
}
示例4: isLoadBase
bool isLoadBase(const String& path)
{
for(int i=0;i<loadBases.Count();i++)
{
if(path.StartWith(loadBases[i]))return true;
}
return false;
}
示例5: addToLoadBases
void addToLoadBases(const String& base)
{
String path=base;
path.ToLower();
for(int i=0;i<loadBases.Count();i++)
{
if(loadBases[i]==path)return;
}
loadBases.Push(path);
}
示例6: GeneralProc
BOOL CALLBACK GeneralProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
switch (uMsg)
{
case WM_INITDIALOG:
{
// port
char port[256];
wsprintf(port, "%d", ConfigDialog::Get()->GetConfig()->GetPort());
SendDlgItemMessage(hwndDlg, ID_GENERAL_PORT, WM_SETTEXT, 0, (LPARAM)(LPCTSTR)port);
// password
const char *pass = ConfigDialog::Get()->GetConfig()->GetPassword();
SendDlgItemMessage(hwndDlg, ID_GENERAL_PASSWORD, WM_SETTEXT, 0, (LPARAM)(LPCTSTR)pass);
// set all unasigned ip
char *defip = Server::Get()->ConvertToAddress(DEFAULT_IP_ADDRESS, Server::ByteOrder::Host);
SendDlgItemMessage(hwndDlg, ID_GENERAL_IP_ADDRESS, CB_ADDSTRING, 0, (LPARAM)(LPCTSTR)defip);
SendDlgItemMessage(hwndDlg, ID_GENERAL_IP_ADDRESS, CB_SETCURSEL, 0, 0);
// set ip list
Array<DWORD> ipList;
Server::Get()->GetIpAddressList(ipList);
for(unsigned int i=0; i<ipList.Count(); i++)
{
char *tmp = Server::Get()->ConvertToAddress(ipList[i], Server::ByteOrder::Host);
int cur = SendDlgItemMessage(hwndDlg, ID_GENERAL_IP_ADDRESS, CB_ADDSTRING, 0, (LPARAM)(LPCTSTR)tmp);
if (ConfigDialog::Get()->GetConfig()->GetIpAddress() == ipList[i])
SendDlgItemMessage(hwndDlg, ID_GENERAL_IP_ADDRESS, CB_SETCURSEL, cur, 0);
}
// auto start
if (ConfigDialog::Get()->GetConfig()->IsAutoStartEnabled())
CheckDlgButton(hwndDlg, ID_GENERAL_AUTO_SERVICE, BST_CHECKED);
else
CheckDlgButton(hwndDlg, ID_GENERAL_AUTO_SERVICE, BST_UNCHECKED);
break;
} // WM_INITDIALOG
case WM_APP_SERIALIZE:
{
char tmp[256];
// port
SendDlgItemMessage(hwndDlg, ID_GENERAL_PORT, WM_GETTEXT, (WPARAM)sizeof(tmp), (LPARAM)&tmp);
ConfigDialog::Get()->GetConfig()->SetPort(atoi(tmp));
// password
SendDlgItemMessage(hwndDlg, ID_GENERAL_PASSWORD, WM_GETTEXT, (WPARAM)sizeof(tmp), (LPARAM)&tmp);
ConfigDialog::Get()->GetConfig()->SetPassword(tmp);
// ip
SendDlgItemMessage(hwndDlg, ID_GENERAL_IP_ADDRESS, WM_GETTEXT, (WPARAM)sizeof(tmp), (LPARAM)&tmp);
DWORD ipaddr = Server::Get()->ConvertToIp(tmp);
ConfigDialog::Get()->GetConfig()->SetIpAddress(ipaddr);
// auto start
bool start = (IsDlgButtonChecked(hwndDlg, ID_GENERAL_AUTO_SERVICE) == BST_CHECKED);
ConfigDialog::Get()->GetConfig()->SetAutoStart(start);
break;
} // WM_APP_SERIALIZE
}
return FALSE;
}
示例7: _PathTracking_Update
Void CharEntity::_PathTracking_Update( const Array<WorldPathWaypoint*> & arrPath )
{
// Destroy path tracking
_PathTracking_End();
// Find which waypoint we need to go to next
Vertex3 vPosition = GetPosition();
Scalar fSqrDistance, fPrevSqrDistance = SCALAR_INFINITE;
//Scalar fPrevPrevSqrDistance;
Assert( m_iLastPassedWaypoint != INVALID_OFFSET );
UInt iNextWaypoint = m_iLastPassedWaypoint;
while( iNextWaypoint < arrPath.Count() ) {
// Detect if the path stops getting closer from our position
fSqrDistance = ( arrPath[iNextWaypoint]->GetPosition() - vPosition ).NormSqr();
if ( fSqrDistance > fPrevSqrDistance ) {
// Either one of those 2 cases : we allways choose i
// -----*--X--|-----*----------*----
// i-1 i
// -----*-----|--X--*----------*---- where i is iNextWaypoint
// i-2 i-1 i
//if ( iNextWaypoint >= 2 ) {
// fPrevPrevSqrDistance = ( arrPath[iNextWaypoint-2]->GetPosition() - vPosition ).NormSqr();
// if ( fPrevPrevSqrDistance < fSqrDistance )
// --iNextWaypoint;
//}
break;
}
fPrevSqrDistance = fSqrDistance;
++iNextWaypoint;
}
// This is a safe assumption ...
// We allways have the last call to this made way before
// path tracking is finished, timing is obviously enforced here.
Assert( iNextWaypoint < arrPath.Count() );
m_iLastPassedWaypoint = ( iNextWaypoint - 1 );
WorldPathFinder * pPathFinder = WorldFn->GetPathFinder();
Bool bFinished = pPathFinder->IsFinished( m_idPathTracking );
// Recreate path tracking
EntityFn->SelectMemory( TEXT("Scratch") );
UInt iControlPointCount = ( arrPath.Count() - iNextWaypoint + 1 );
UInt iDegree = Min<UInt>( iControlPointCount - 1, 3 );
Vertex3 * arrControlPoints = New Vertex3[iControlPointCount];
Scalar * arrParameters = New Scalar[iControlPointCount];
Vertex2 * arrTravelPoints = New Vertex2[iControlPointCount];
arrControlPoints[0] = vPosition;
for( UInt i = 1; i < iControlPointCount - 1; ++i )
arrControlPoints[i] = arrPath[iNextWaypoint + (i-1)]->GetPosition();
if ( bFinished )
arrControlPoints[iControlPointCount - 1] = m_vPathTarget;
else
arrControlPoints[iControlPointCount - 1] = arrPath[iNextWaypoint + (iControlPointCount - 2)]->GetPosition();
m_pLinearPath = New BSplinePatch3( arrControlPoints, iControlPointCount, iDegree, false, false );
m_pLinearPath->SubDivideByParameter( arrParameters, iControlPointCount );
for( UInt i = 0; i < iControlPointCount; ++i ) {
Vector3 vTangent = m_pLinearPath->Tangent( arrParameters[i] );
arrControlPoints[i].X = 0.0f;
arrControlPoints[i].Y = 0.0f;
arrControlPoints[i].Z = MathFn->ArcCos( vTangent * Vector3::eI );
}
m_pAngularPath = New BSplinePatch3( arrControlPoints, iControlPointCount, iDegree, false, false );
Scalar fLength = m_pLinearPath->Curve3::Length();
Scalar fTime = ( fLength / m_pCharacter->GetMovementSpeed() );
Scalar fLengthInterval = ( fLength / (Scalar)(iControlPointCount - 1) );
Scalar fTimeInterval = ( fTime / (Scalar)(iControlPointCount - 1) );
Scalar fX = 0.0f, fY = 0.0f;
for( UInt i = 0; i < iControlPointCount; ++i ) {
arrTravelPoints[i].X = fX;
arrTravelPoints[i].Y = fY;
fX += fLengthInterval;
fY += fTimeInterval;
}
m_pLinearTravel = New BSplinePatch2( arrTravelPoints, iControlPointCount, iDegree, false, false );
m_pAngularTravel = New BSplinePatch2( arrTravelPoints, iControlPointCount, iDegree, false, false );
DeleteA( arrTravelPoints );
arrTravelPoints = NULL;
DeleteA( arrParameters );
arrParameters = NULL;
DeleteA( arrControlPoints );
arrControlPoints = NULL;
EntityFn->UnSelectMemory();
// Disable character controller
m_pController->SetStanding();
KinematicBody * pBody = (KinematicBody*)m_pBody;
m_pController->Enabled = false;
pBody->DetachMotionController();
//.........这里部分代码省略.........
示例8: _PathTracking_Start
Void CharEntity::_PathTracking_Start( const Array<WorldPathWaypoint*> & arrPath )
{
Assert( m_pPathController == NULL );
WorldPathFinder * pPathFinder = WorldFn->GetPathFinder();
Bool bFinished = pPathFinder->IsFinished( m_idPathTracking );
// Create path data
EntityFn->SelectMemory( TEXT("Scratch") );
Bool bBias = false;
UInt iControlPointCount = arrPath.Count();
if ( iControlPointCount == 1 ) {
Assert( bFinished );
++iControlPointCount;
bBias = true;
}
UInt iDegree = Min<UInt>( iControlPointCount - 1, 3 );
Vertex3 * arrControlPoints = New Vertex3[iControlPointCount];
Scalar * arrParameters = New Scalar[iControlPointCount];
Vertex2 * arrTravelPoints = New Vertex2[iControlPointCount];
arrControlPoints[0] = GetPosition();
if ( bBias )
arrControlPoints[1] = m_vPathTarget;
else {
for( UInt i = 1; i < iControlPointCount - 1; ++i )
arrControlPoints[i] = arrPath[i]->GetPosition();
if ( bFinished )
arrControlPoints[iControlPointCount - 1] = m_vPathTarget;
else
arrControlPoints[iControlPointCount - 1] = arrPath[iControlPointCount - 1]->GetPosition();
}
m_pLinearPath = New BSplinePatch3( arrControlPoints, iControlPointCount, iDegree, false, false );
m_pLinearPath->SubDivideByParameter( arrParameters, iControlPointCount );
for( UInt i = 0; i < iControlPointCount; ++i ) {
Vector3 vTangent = m_pLinearPath->Tangent( arrParameters[i] );
arrControlPoints[i].X = 0.0f;
arrControlPoints[i].Y = 0.0f;
arrControlPoints[i].Z = MathFn->ArcCos( vTangent * Vector3::eI );
}
m_pAngularPath = New BSplinePatch3( arrControlPoints, iControlPointCount, iDegree, false, false );
Scalar fLength = m_pLinearPath->Curve3::Length();
Scalar fTime = ( fLength / m_pCharacter->GetMovementSpeed() );
Scalar fLengthInterval = ( fLength / (Scalar)(iControlPointCount - 1) );
Scalar fTimeInterval = ( fTime / (Scalar)(iControlPointCount - 1) );
Scalar fX = 0.0f, fY = 0.0f;
for( UInt i = 0; i < iControlPointCount; ++i ) {
arrTravelPoints[i].X = fX;
arrTravelPoints[i].Y = fY;
fX += fLengthInterval;
fY += fTimeInterval;
}
m_pLinearTravel = New BSplinePatch2( arrTravelPoints, iControlPointCount, iDegree, false, false );
m_pAngularTravel = New BSplinePatch2( arrTravelPoints, iControlPointCount, iDegree, false, false );
DeleteA( arrTravelPoints );
arrTravelPoints = NULL;
DeleteA( arrParameters );
arrParameters = NULL;
DeleteA( arrControlPoints );
arrControlPoints = NULL;
EntityFn->UnSelectMemory();
// Disable character controller
m_pController->SetStanding();
KinematicBody * pBody = (KinematicBody*)m_pBody;
m_pController->Enabled = false;
pBody->DetachMotionController();
// Enable path controller
m_pPathController = PhysicsFn->CreatePathController( TEXT("PathController"), m_pLinearPath, m_pLinearTravel,
m_pAngularPath, m_pAngularTravel, EULER_ANGLES_ZYX );
m_pPathController->Enabled = true;
m_pPathController->MaxTime = fTime;
pBody->AttachController( m_pPathController );
}
示例9: OpenPlugin
FARAPI(HANDLE) OpenPlugin(int OpenFrom,int Item)
{
UpdateConfig();
if(OpenFrom==OPEN_EDITOR)
{
//DebugBreak();
EditorInfo ei;
I.EditorControl(ECTL_GETINFO,&ei);
Autoload(ei.FileName);
if(Count()==0)
{
Msg(MENotLoaded);
return INVALID_HANDLE_VALUE;
}
MenuList ml;
enum{
miFindSymbol,miUndo,miResetUndo,
miComplete,miBrowseFile,miBrowseClass,
};
ml<<MI(MFindSymbol,miFindSymbol)
<<MI(MCompleteSymbol,miComplete)
<<MI(MUndoNavigation,miUndo)
<<MI(MResetUndo,miResetUndo)
<<MI(MBrowseSymbolsInFile,miBrowseFile)
<<MI(MBrowseClass,miBrowseClass);
int res=Menu(GetMsg(MPlugin),ml,0);
if(res==-1)return INVALID_HANDLE_VALUE;
switch(res)
{
case miFindSymbol:
{
String word=GetWord();
if(word.Length()==0)return INVALID_HANDLE_VALUE;
//Msg(word);
PTagArray ta=Find(word,ei.FileName);
if(!ta)
{
Msg(GetMsg(MNotFound));
return INVALID_HANDLE_VALUE;
}
TagInfo *ti;
if(ta->Count()==1)
{
ti=(*ta)[0];
}else
{
ti=TagsMenu(ta);
}
if(ti)NavigateTo(ti);
FreeTagsArray(ta);
}break;
case miUndo:
{
if(UndoArray.Count()==0)return INVALID_HANDLE_VALUE;
/*char b[32];
sprintf(b,"%d",ei.CurState);
Msg(b);*/
if(ei.CurState==ECSTATE_SAVED)
{
I.EditorControl(ECTL_QUIT,NULL);
I.AdvControl(I.ModuleNumber,ACTL_COMMIT,(void*)-1);
}
SUndoInfo ui;
UndoArray.Pop(ui);
SetPos(ui.file,ui.line,ui.pos,ui.top,ui.left);
}break;
case miResetUndo:
{
UndoArray.Clean();
}break;
case miComplete:
{
EditorInfo ei;
I.EditorControl(ECTL_GETINFO,&ei);
String word=GetWord(1);
if(word.Length()==0)return INVALID_HANDLE_VALUE;
StrList lst;
FindParts(ei.FileName,word,lst);
if(lst.Count()==0)
{
Msg(MNothingFound);
return INVALID_HANDLE_VALUE;
}
int res;
if(lst.Count()>1)
{
MenuList ml;
for(int i=0;i<lst.Count();i++)
{
ml<<MI(lst[i],i);
}
res=Menu(GetMsg(MSelectSymbol),ml,0,MF_FILTER|MF_SHOWCOUNT,(void*)word.Str());
if(res==-1)return INVALID_HANDLE_VALUE;
}else
{
res=0;
}
EditorGetString egs;
egs.StringNumber=-1;
I.EditorControl(ECTL_GETSTRING,&egs);
//.........这里部分代码省略.........