本文整理汇总了C++中TJS_W函数的典型用法代码示例。如果您正苦于以下问题:C++ TJS_W函数的具体用法?C++ TJS_W怎么用?C++ TJS_W使用的例子?那么, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了TJS_W函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: V2Unlink
//---------------------------------------------------------------------------
extern "C" HRESULT _stdcall _export V2Unlink()
{
// 吉里吉里側から、プラグインを解放しようとするときに呼ばれる関数。
// もし何らかの条件でプラグインを解放できない場合は
// この時点で E_FAIL を返すようにする。
// ここでは、TVPPluginGlobalRefCount が GlobalRefCountAtInit よりも
// 大きくなっていれば失敗ということにする。
if(TVPPluginGlobalRefCount > GlobalRefCountAtInit) return E_FAIL;
// E_FAIL が帰ると、Plugins.unlink メソッドは偽を返す
// TJS のグローバルオブジェクトに登録した関数を削除する
// - まず、TJS のグローバルオブジェクトを取得する
iTJSDispatch2 * global = TVPGetScriptDispatch();
// - global の DeleteMember メソッドを用い、オブジェクトを削除する
if(global)
{
// TJS 自体が既に解放されていたときなどは
// global は NULL になり得るので global が NULL でない
// ことをチェックする
global->DeleteMember(
0, // フラグ ( 0 でよい )
TJS_W("wmrStart"), // メンバ名
NULL, // ヒント
global // コンテキスト
);
global->DeleteMember(
0, // フラグ ( 0 でよい )
TJS_W("wmrStop"), // メンバ名
NULL, // ヒント
global // コンテキスト
);
// 登録した関数が複数ある場合は これを繰り返す
}
// - global を Release する
if(global) global->Release();
// スタブの使用終了(必ず記述する)
TVPUninitImportStub();
return S_OK;
}
示例2: AddTrace
//---------------------------------------------------------------------------
bool eTJSScriptError::AddTrace(const ttstr & data)
{
tjs_int len = Trace.GetLen();
if(len >= TJS_MAX_TRACE_TEXT_LEN) return false;
if(len != 0) Trace += TJS_W(" <-- ");
Trace += data;
return true;
}
示例3: TVPFormatMessage
ttstr TVPFormatMessage(const tjs_char *msg, const ttstr & p1, const ttstr & p2)
{
tjs_char *p;
tjs_char * buf =
new tjs_char[TJS_strlen(msg) + p1.GetLen() + p2.GetLen() + 1];
p = buf;
for(;*msg;msg++,p++)
{
if(*msg == TJS_W('%'))
{
if(msg[1] == TJS_W('%'))
{
// %%
*p = TJS_W('%');
msg++;
continue;
}
else if(msg[1] == TJS_W('1'))
{
// %1
TJS_strcpy(p, p1.c_str());
p += p1.GetLen();
p--;
msg++;
continue;
}
else if(msg[1] == TJS_W('2'))
{
// %2
TJS_strcpy(p, p2.c_str());
p += p2.GetLen();
p--;
msg++;
continue;
}
}
*p = *msg;
}
*p = 0;
ttstr ret(buf);
delete [] buf;
return ret;
}
示例4: str
//---------------------------------------------------------------------------
void GDIFontRasterizer::InitChAntialiasMethod() {
if(ChAntialiasMethodInit) return;
ChAntialiasMethod = camAPI; // default
tTJSVariant val;
if( TVPGetCommandLine(TJS_W("-aamethod"), &val) ) {
ttstr str(val);
#if 0 // まったく意味のないコード?
if(str == TJS_W("auto"))
; // nothing to do
#endif
if(str == TJS_W("res8"))
ChAntialiasMethod = camResample8;
else if(str == TJS_W("res4"))
ChAntialiasMethod = camResample4;
else if(str == TJS_W("api"))
ChAntialiasMethod = camAPI;
else if(str == TJS_W("rgb"))
ChAntialiasMethod = camSubpixelRGB;
else if(str == TJS_W("bgr"))
ChAntialiasMethod = camSubpixelBGR;
}
ChAntialiasMethodInit = true;
}
示例5: LayerPropGet
static tTVInteger LayerPropGet(iTJSDispatch2 *lay, ttstr &prop, tTVInteger defval = 0) {
if (!LayerClass) {
tTJSVariant var;
TVPExecuteExpression(TJS_W("Layer"), &var);
LayerClass = var.AsObjectNoAddRef();
}
tTJSVariant val;
return (TJS_FAILED(LayerClass->PropGet(0, prop.c_str(), prop.GetHint(), &val, lay))) ? defval : val.AsInteger();
}
示例6: TJSAddObjectHashRecord
//---------------------------------------------------------------------------
// tTJSNativeFunction
//---------------------------------------------------------------------------
tTJSNativeFunction::tTJSNativeFunction(const tjs_char *name)
{
if(TJSObjectHashMapEnabled())
{
TJSAddObjectHashRecord(this);
if(name)
TJSObjectHashSetType(this, ttstr(TJS_W("(native function) ")) + name);
}
}
示例7: TVPGetVersionString
//---------------------------------------------------------------------------
ttstr TVPGetVersionString()
{
TVPGetVersion();
tjs_char verstr[100];
TJS_snprintf(verstr, sizeof(verstr)/sizeof(tjs_char), TJS_W("%d.%d.%d.%d"),
TVPVersionMajor, TVPVersionMinor,
TVPVersionRelease, TVPVersionBuild);
return ttstr(verstr);
}
示例8: PostRegistCallback
/**
* 登録処理後
*/
static void PostRegistCallback()
{
// Array.count を取得
{
tTJSVariant varScripts;
TVPExecuteExpression(TJS_W("Array"), &varScripts);
iTJSDispatch2 *dispatch = varScripts.AsObjectNoAddRef();
tTJSVariant val;
if (TJS_FAILED(dispatch->PropGet(TJS_IGNOREPROP,
TJS_W("count"),
NULL,
&val,
dispatch))) {
TVPThrowExceptionMessage(L"can't get Array.count");
}
ArrayCountProp = val.AsObject();
}
}
示例9: TVPThrowExceptionMessage
//---------------------------------------------------------------------------
void TJS_INTF_METHOD tTVPDrawDevice::RemoveLayerManager(iTVPLayerManager * manager)
{
// Managers から manager を削除する。Releaseする。
std::vector<iTVPLayerManager *>::iterator i = std::find(Managers.begin(), Managers.end(), manager);
if(i == Managers.end())
TVPThrowExceptionMessage(TJS_W("Internal Error"));
(*i)->Release();
Managers.erase(i);
}
示例10: PushConfigFileOptions
//---------------------------------------------------------------------------
static void PushConfigFileOptions(TStringList * options)
{
if(!options) return;
for(int j = 0; j < options->Count; j++)
{
if(options->Strings[j].c_str()[0] != ';') // unless comment
TVPProgramArguments.push_back(
TVPParseCommandLineOne(TJS_W("-") + ttstr(options->Strings[j])));
}
}
示例11: TJSThrowFrom_tjs_error
//---------------------------------------------------------------------------
void TJSThrowFrom_tjs_error(tjs_error hr, const tjs_char *name)
{
// raise an exception descripted as tjs_error
// name = variable name ( otherwide it can be NULL )
switch(hr)
{
case TJS_E_MEMBERNOTFOUND:
{
if(name)
{
ttstr str(TJSMemberNotFound);
str.Replace(TJS_W("%1"), name);
TJS_eTJSError(str);
}
else
{
TJS_eTJSError(TJSMemberNotFoundNoNameGiven);
}
}
case TJS_E_NOTIMPL:
TJS_eTJSError(TJSNotImplemented);
case TJS_E_INVALIDPARAM:
TJS_eTJSError(TJSInvalidParam);
case TJS_E_BADPARAMCOUNT:
TJS_eTJSError(TJSBadParamCount);
case TJS_E_INVALIDTYPE:
TJS_eTJSError(TJSInvalidType);
case TJS_E_ACCESSDENYED:
TJS_eTJSError(TJSAccessDenyed);
case TJS_E_INVALIDOBJECT:
TJS_eTJSError(TJSInvalidObject);
case TJS_E_NATIVECLASSCRASH:
TJS_eTJSError(TJSNativeClassCrash);
default:
if(TJS_FAILED(hr))
{
tjs_char buf[256];
TJS_snprintf(buf, 256, TJS_W("Unknown failure : %08X"), hr);
TJS_eTJSError(buf);
}
}
}
示例12: getSampleValue
/**
* サンプル値の取得(新方式)
* getVisBuffer(buf, sampleCount, 1, sampleAhead)でサンプルを取得し,
* (value/32768)^2の最大値を取得します。(0〜1の実数で返ります)
* ※このプロパティを読み出すと暗黙でuseVisBuffer=trueに設定されます
*/
double getSampleValue() {
memset(buf, 0, counts*sizeof(short));
tTJSVariant result;
tjs_error r = objthis->FuncCall(0, TJS_W("getVisBuffer"), &hint, &result, 4, params, objthis);
if (r != TJS_S_OK) TVPAddLog(ttstr(TJS_W("getVisBuffer failed: "))+ttstr(r));
int cnt = (int)result.AsInteger();
if (cnt > counts || cnt < 0) cnt = counts;
// サンプルの二乗中の最大値を返す
double max = 0;
for (int i=cnt-1;i>=0;i--) {
double s = ((double)buf[i]) / +32768.0;
s *= s;
if (max < s) max = s;
}
return max;
}
示例13: TJSReportExceptionSource
//---------------------------------------------------------------------------
// throw helper functions
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------
static void TJSReportExceptionSource(const ttstr &msg, tTJSScriptBlock *block,
tjs_int srcpos)
{
if(TJSEnableDebugMode)
{
tTJS *tjs = block->GetTJS();
tjs->OutputExceptionToConsole((msg + TJS_W(" at ") +
block->GetLineDescriptionString(srcpos)).c_str());
}
}
示例14: TJS_sprintf
//---------------------------------------------------------------------------
ttstr tTJSScriptBlock::GetLineDescriptionString(tjs_int pos) const
{
// get short description, like "mainwindow.tjs(321)"
// pos is in character count from the first of the script
tjs_int line =SrcPosToLine(pos)+1;
ttstr name;
if(Name)
{
name = Name;
}
else
{
tjs_char ptr[128];
TJS_sprintf(ptr, TJS_W("0x%p"), this);
name = ttstr(TJS_W("[email protected]")) + ptr;
}
return name + TJS_W("(") + ttstr(line) + TJS_W(")");
}
示例15: urldecode
// urldecode処理
static tjs_error TJS_INTF_METHOD urldecode(tTJSVariant *result,
tjs_int numparams,
tTJSVariant **param,
iTJSDispatch2 *objthis) {
if (numparams > 0 && result) {
bool utf8 = !(numparams> 1 && (int)*param[1] == 0);
ttstr str = *param[0];
tjs_int len = str.length();
std::string os;
for (int i=0;i<len;i++) {
int ch = str[i];
if (ch > 0xff) {
return TJS_E_INVALIDPARAM;
}
if (ch == '%') {
if (i + 2 >= len) {
return TJS_E_INVALIDPARAM;
}
char buf[3];
buf[0] = (char)str[i+1];
buf[1] = (char)str[i+2];
buf[2] = '\0';
long n = strtol(buf, NULL, 16);
if (errno == ERANGE) {
return TJS_E_INVALIDPARAM;
}
os += (char)n;
i+=2;
} else {
os += (char)ch;
}
}
if (utf8) {
const char *s = os.c_str();
tjs_int len = TVPUtf8ToWideCharString(s, NULL);
if (len > 0) {
tjs_char *dat = new tjs_char[len+1];
try {
TVPUtf8ToWideCharString(s, dat);
dat[len] = TJS_W('\0');
}
catch(...) {
delete [] dat;
throw;
}
*result = ttstr(dat);
delete [] dat;
}
} else {
*result = ttstr(os.c_str());
}
}
return TJS_S_OK;
}