예제 #1
0
// template:
// must contain one and only one instance of '$(f)' (without the quotes)
// if if !canEndWithKey -> must not end with $(f)
// if starts with $(f) then it expands to the full path + file name.
// if doesn't start with $(f) then it's expanded to file name only (with extension)
// if doesn't start with $(f) and ends up relative,
//   then it's relative to base (not to cwd)
// No checks are performed if the result file name can be created.
// If this proves useful, we can move it into Path:: . Right now there's no need.
static wxString ApplyTemplate(const wxString &name, const wxDirName &base,
                              const wxString &fileTemplate, const wxString &filename,
                              bool canEndWithKey)
{
	wxString tem(fileTemplate);
	wxString key = INDEX_TEMPLATE_KEY;
	tem = tem.Trim(true).Trim(false); // both sides

	size_t first = tem.find(key);
	if (first == wxString::npos // not found
	    || first != tem.rfind(key) // more than one instance
	    || !canEndWithKey && first == tem.length() - key.length())
	{
		Console.Error(L"Invalid %s template '%s'.\n"
		              L"Template must contain exactly one '%s' and must not end with it. Abotring.",
		              WX_STR(name), WX_STR(tem), WX_STR(key));
		return L"";
	}

	wxString fname(filename);
	if (first > 0)
		fname = Path::GetFilename(fname); // without path

	tem.Replace(key, fname);
	if (first > 0)
		tem = Path::Combine(base, tem); // ignores appRoot if tem is absolute

	return tem;
}
예제 #2
0
파일: Text.C 프로젝트: juddy/edcde
void Text::tokenize(Char space, Text &text) const
{
  TextIter iter(*this);
  TextItem::Type type;
  const Char *p;
  size_t n;
  const Location *loc;
  while (iter.next(type, p, n, loc)) {
    switch (type) {
    case TextItem::data:
      text.addCharsTokenize(p, n, *loc, space);
      break;
    case TextItem::sdata:
    case TextItem::cdata:
      {
	text.addEntityStart(*loc);
	text.addCharsTokenize(p, n, *loc, space);
	Location tem(*loc);
	tem += n;
	text.addEntityEnd(tem);
      }
      break;
    case TextItem::ignore:
      text.ignoreChar(*p, *loc);
      break;
    default:
      text.addSimple(type, *loc);
      break;
    }
  }
  if (text.size() > 0 && text.lastChar() == space)
    text.ignoreLastChar();
}
예제 #3
0
const char* const xlwLogger::GetTime() {
    time_t tem(time(&theTime[2]));
    char * timePtr = asctime(gmtime(&tem));
    for(unsigned long i(0);i<8;i++)timeTemp[i]=wchar_t(timePtr[i+11]);
    timeTemp[8]=0;
    return timeTemp;
}
예제 #4
0
int tem(int n, int find){
	if(n <= 0)
		return 0;
	if(n % 10 == find)
		return 1;
	
	return tem(n/10, find);
}
 int longestIncreasingPath(vector<vector<int>>& matrix) {
 if(matrix.size()==0)return 0;
 int Max=0;
 vector<int> tem(matrix[0].size(),0);
 vector<vector<int>> hash(matrix.size(), tem);
 for(int i = 0; i< matrix.size(); i++)
     for(int j = 0; j < matrix[0].size(); j++)
         Max = max(DFS(matrix, i, j, INT_MIN, hash), Max);
     return Max;
 }
예제 #6
0
int main(){
	int i = 0, m = 10000000, k = 0;
	
	for(i = 1; i < m; i++, k = 0){
	
		if(i % 3 == 0 || tem(i, 3)){
			printf("Fizz");
			k++;
		}
		
		if(i % 5 == 0 || tem(i, 5)){
			printf("Buzz");
			k++;
		}
		
		if(!k)
			printf("%d", i);
		
		printf("\n");
	}

	return 0;
}
예제 #7
0
파일: PointerTable.C 프로젝트: juddy/edcde
P PointerTable<P, K, HF, KF>::insert(P p, Boolean replace)
{
  size_t h;
  if (vec_.size() == 0) {
    vec_.assign(8, P(0));
    usedLimit_ = 4;
    h = startIndex(KF::key(*p));
  }
  else {
    for (h = startIndex(KF::key(*p)); vec_[h] != 0 ; h = nextIndex(h))
      if (KF::key(*vec_[h]) == KF::key(*p)) {
	if (replace) {
	  P tem(vec_[h]);
	  vec_[h] = p;
	  return tem;
	}
	else
	  return vec_[h];
      }
    if (used_ >= usedLimit_) {
      if (vec_.size() > size_t(-1)/2) {
	if (usedLimit_ == vec_.size() - 1)
	  abort();		// FIXME throw an exception
	else
	  usedLimit_ = vec_.size() - 1;
      }
      else {
	// rehash
	Vector<P> oldVec(vec_.size()*2, P(0));
	vec_.swap(oldVec);
	usedLimit_ = vec_.size() / 2;
	for (size_t i = 0; i < oldVec.size(); i++)
	  if (oldVec[i] != 0) {
	    size_t j;
	    for (j = startIndex(KF::key(*oldVec[i]));
		 vec_[j] != 0;
		 j = nextIndex(j))
	      ;
	    vec_[j] = oldVec[i];
	  }
	for (h = startIndex(KF::key(*p)); vec_[h] != 0; h = nextIndex(h))
	  ;
      }
    }
  }
  used_++;
  vec_[h] = p;
  return 0;
}
예제 #8
0
파일: Kinematics.cpp 프로젝트: hyperchi/Cpp
//toj为目标关节的编号,一般为最末端的关节
void Kinematics::InverseKine(int toj)
{
	Matrix err(6,1);
	Matrix tem(6,1);
	float dq[6];

	const float lambda = 0.99f;
	ForwardKine(0);
	Matrix Jacobian(6);

	for (int n=0; n<10 ; n++)
	{
		CalJacobian(Jacobian);
		//Jacobian.PrintMatrix();

		if (!Jacobian.Invert())
		{
			//std::cout<<"NO Jacobian Invert"<<std::endl;
		}
		

		CalErr(toj,err);
		//err.PrintMatrix();

		if (err.Norm()<1E-6f)
		{
			//TestPrint();
			return;
		}
		tem =Jacobian * err * lambda;
		//tem.PrintMatrix();

		for (int n=0; n<6; n++)
			dq[n] = tem.GetElement(n,0);

		for (unsigned int i = 1 ; i<mJointU.size(); i++)
		{
			mJointU[i].q = mJointU[i].q + dq[i-1];

		}
		ForwardKine(0);

	}
//TestPrint();

}
예제 #9
0
파일: Kinematics.cpp 프로젝트: hyperchi/Cpp
void Kinematics::CalJacobian(Matrix &Jacobian)
{
	Matrix tem_i_r(3,3);
	Matrix tem_i_a(3,1);
	Matrix tem(3,1);
	float u1,u2,u3,v1,v2,v3;
	
	for (unsigned int i =1; i<mJointU.size(); i++)
	{
		
		tem_i_r.SetData(mJointU[i].R);
		tem_i_a.SetData(mJointU[i].Ax);
		
		tem = tem_i_r * tem_i_a;
		//tem.PrintMatrix();
	
		v1 = mTarget.P[0] - mJointU[i].P[0];
		v2 = mTarget.P[1] - mJointU[i].P[1];
		v3 = mTarget.P[2] - mJointU[i].P[2];

		u1 = tem.GetElement(0,0);
		u2 = tem.GetElement(1,0);
		u3 = tem.GetElement(2,0);

		//u x v = { u2v3-v2u3 , u3v1-v3u1 , u1v2-u2v1 }

		Jacobian.SetElement(0,i-1,u2*v3 - v2*u3 );
		Jacobian.SetElement(1,i-1,u3*v1 - v3*u1 );
		Jacobian.SetElement(2,i-1,u1*v2 - v1*u2 );
        Jacobian.SetElement(3,i-1,u1);
		Jacobian.SetElement(4,i-1,u2);
		Jacobian.SetElement(5,i-1,u3);
	}
	Jacobian.SetElement(0,5,0.0f );
	Jacobian.SetElement(1,5,0.0f );
	Jacobian.SetElement(2,5,0.0f );
    

}
예제 #10
0
	Time Date::operator -(Date second){
	    long temp=(seconds-second.tSeconds());
	    Time tem(true,temp);
		return tem;
	}
예제 #11
0
void EncodeOutputCharStream::handleUnencodable(Char c, OutputByteStream *)
{
  EncodeOutputCharStream tem(byteStream_, encoder_);
  if (escaper_)
    (*escaper_)(tem, c);
}
예제 #12
0
void NBImpedance::InducedField(Grid1D& efield, Grid1D& line_current_density)
{
	int n=efield.get_size();
	int N_t=time_window.size()/2;
	
	if ( N_t == 0) {
		for(int j=0;j<n;j++) efield[j]=0.0;
		return;
	}
	
	static int t=0;
	double bl_amp, bl_real, bl_imag, bl_phase; 
	double dz=efield.get_dz();
	
	double circum=dz*n;
	double bucket_h = circum/(double)harmonic;
	vektor current(n);
	for(int j=0; j<n; j++) current[j]=line_current_density[j]; 

	realft(current,1);

	if(t==0)
	{
		for(int j=0;j<2*N_t;j+=2)
		{
			time_window[j]=current[2*(int)harmonic];
			time_window[j+1]=current[2*(int)harmonic+1];
		}
		t=1;
	}

	time_window.pop_front();
	time_window.pop_front();
	time_window.push_back(current[2*(int)harmonic]);
	time_window.push_back(current[2*(int)harmonic+1]);

	vektor tem(2*N_t);
	for(int j=0;j<2*N_t;j++)
		tem[j]=time_window[j]; 
	four1(tem,1);

	for(int j=0;j<=N_t/2;j++)
	{ 
		komplex temc(tem[2*j],tem[2*j+1]);
		komplex temc2(0.0,0.0);
		temc2=-temc*Z[N_t/2-j];
		tem[2*j]=temc2.real(); 
		tem[2*j+1]=temc2.imag(); 
	}

	for(int j=1;j<N_t/2;j++)
	{ 
		komplex temc(tem[2*N_t-2*j-3],tem[2*N_t-2*j-2]);
		komplex temc2(0.0,0.0);
		temc2=-temc*Z[j+N_t/2];
		tem[2*N_t-2*j-3]=temc2.real(); 
		tem[2*N_t-2*j-2]=temc2.imag(); 
	}

	four1(tem,-1);

	bl_real=tem[2*N_t-2]/circum;
	bl_imag=tem[2*N_t-1]/circum;
	bl_amp   = sqrt(bl_real*bl_real+bl_imag*bl_imag) ;
	bl_phase = atan2(bl_imag,bl_real) ;

	for(int j=0;j<n;j++)
		efield[j]=bl_amp*cos(2.0*PI/bucket_h*(j+0.5)*dz-bl_phase);

	return;

}
예제 #13
0
파일: Kinematics.cpp 프로젝트: hyperchi/Cpp
void Kinematics::ForwardKine(int startJ)
{

	if (startJ!=0)
	{
		int i = startJ - 1;
		Matrix tem_i_r(3,3,mJointU[i].R);
		Matrix tem_j_b(3,1,mJointU[startJ].b);
		Matrix tem_j_r(3,3);
		Matrix tem(3,1);
				
		tem =  tem_i_r * tem_j_b;
		mJointU[startJ].P [0]  = mJointU[i].P[0]+tem.GetElement(0,0);
		mJointU[startJ].P [1]  = mJointU[i].P[1]+tem.GetElement(1,0);
		mJointU[startJ].P [2]  = mJointU[i].P[2]+tem.GetElement(2,0);

		Matrix tem_a(3);

		tem_a.SetElement(0,0,0);
		tem_a.SetElement(0,1,-mJointU[startJ].Ax[2]);
		tem_a.SetElement(0,2,mJointU[startJ].Ax[1]);

		tem_a.SetElement(1,0,mJointU[startJ].Ax[2]);
		tem_a.SetElement(1,1,0);
		tem_a.SetElement(1,2,-mJointU[startJ].Ax[0]);

		tem_a.SetElement(2,0,-mJointU[startJ].Ax[1]);
		tem_a.SetElement(2,1,mJointU[startJ].Ax[0]);
        tem_a.SetElement(2,2,0);

		Matrix tem_E;
		tem_E.MakeUnitMatrix(3);
        tem_E = tem_E + tem_a*sin(mJointU[startJ].q) + tem_a*tem_a*(1-cos(mJointU[startJ].q));

		tem_j_r = tem_i_r * tem_E;
		

/*
		std::cout<<mJointU[startJ].P [0]<<std::endl;
		std::cout<<mJointU[startJ].P [1]<<std::endl;
		std::cout<<mJointU[startJ].P [2]<<std::endl;
		std::cout<<std::endl;
		tem_j_r.PrintMatrix();
*/			
/*
		for (int n=0; n<3; n++)
			for (int nn=0; nn<3; nn++)
			mJointU[startJ].R[3*n+nn] = tem_j_r.GetElement(n,nn);
*/
		memcpy(mJointU[startJ].R,tem_j_r.GetData(),9*sizeof(float));

	}
/*
    if (startJ==6)
    {
		std::cout<<mJointU[startJ].P [0]<<std::endl;
		std::cout<<mJointU[startJ].P [1]<<std::endl;
		std::cout<<mJointU[startJ].P [2]<<std::endl;
    }
*/	
	if (startJ+1 <mJointU.size()) ForwardKine(startJ+1);
	
}