コード例 #1
0
/* Actual Printing method */
JD_IMETHODIMP PluginPrint::Print()
{
  if (mPrintInfo->mode == JDPluginMode_Full)
    {
      return FullPrint();
    }
  else 
    {
      return EmbedPrint();
    }
}
コード例 #2
0
ファイル: print.cpp プロジェクト: hyln9/nV
void Write(wostream &f, Var x)
{
	if(StrQ(x))
	{
		const wchar *s = CStr(x).c_str();
		size_t n = wcslen(s);
		for(size_t i = 0; i < n; ++i)
			FullPrint(s[i],f);
		f << std::endl;
	}
	else if(VecQ(x))
	{
		size_t n = Size(x);
		for(size_t i = 0; i < n; ++i)
			Print(Pretty(At(x,i)),f);
		f << std::endl;
	}
	else
		Println(x,f);
}
コード例 #3
0
ファイル: print.cpp プロジェクト: hyln9/nV
void FullPrint(Var x, wostream &f)
{
	switch(Type(x))
	{
	case TYPE(obj):
		Print(((obj_t*)x)->normal(), f);
		break;
	case TYPE(int):
	case TYPE(rat):
	case TYPE(flt):
		Print(x,f);
		break;
	case TYPE(str):
		{
			f << L'"';
			const wchar *s = CStr(x).c_str();
			size_t n = wcslen(s);
			for(size_t i = 0; i < n; ++i)
				FullPrint(s[i],f);
			f << L'"';
		}
		break;
	case TYPE(sym):
		{
			var c = Context(x);
			if(c != Context() &&
				std::find(
				ContextPath.top().begin(),
				ContextPath.top().end(),c)
				== ContextPath.top().end())
			{
				const wchar *s = ContextName[c];
				size_t n = wcslen(s);
				for(size_t i = 0; i < n; ++i)
					FullPrint(s[i],f);
			}
			const wchar *s = Name(x);
			size_t n = wcslen(s);
			for(size_t i = 0; i < n; ++i)
				FullPrint(s[i],f);
		}
		break;
	case TYPE(vec):
		{
			vec_t::rep_t &rep = CVec(x);
			f << L"List[";
			size_t n = rep.size();
			if(n > 0)
			{
				FullPrint(rep[0],f);
				for(size_t i = 1; i < n; ++i)
				{
					f << L',';
					FullPrint(rep[i],f);
				}
			}
			f << L']';
		}
		break;
	case TYPE(ex):
		{
			ex_t::rep_t &rep = CEx(x);
			FullPrint(rep.first,f);
			f << L'[';
			size_t n = Size(rep.second);
			if(n > 0)
			{
				FullPrint(At(rep.second,0),f);
				for(size_t i = 1; i < n; ++i)
				{
					f << L',';
					FullPrint(At(rep.second,i),f);
				}
			}
			f << L']';
		}
		break;
	}
}