本文整理汇总了C++中callbacks函数的典型用法代码示例。如果您正苦于以下问题:C++ callbacks函数的具体用法?C++ callbacks怎么用?C++ callbacks使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了callbacks函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: GenerateCode
virtual std::string GenerateCode(gd::Instruction & instruction, gd::EventsCodeGenerator & codeGenerator, gd::EventsCodeGenerationContext & context)
{
std::string value1Code;
{
gd::CallbacksForGeneratingExpressionCode callbacks(value1Code, codeGenerator, context);
gd::ExpressionParser parser(instruction.GetParameters()[0].GetPlainString());
if (!parser.ParseMathExpression(codeGenerator.GetPlatform(), codeGenerator.GetProject(), codeGenerator.GetLayout(), callbacks) || value1Code.empty()) value1Code = "0";
}
std::string value2Code;
{
gd::CallbacksForGeneratingExpressionCode callbacks(value2Code, codeGenerator, context);
gd::ExpressionParser parser(instruction.GetParameters()[2].GetPlainString());
if (!parser.ParseMathExpression(codeGenerator.GetPlatform(), codeGenerator.GetProject(), codeGenerator.GetLayout(), callbacks) || value2Code.empty()) value2Code = "0";
}
std::string resultingBoolean = codeGenerator.GenerateBooleanFullName("conditionTrue", context)+".val";
if ( instruction.GetParameters()[1].GetPlainString() == "=" || instruction.GetParameters()[1].GetPlainString().empty() )
return resultingBoolean + " = ("+value1Code+" == "+value2Code+");\n";
else if ( instruction.GetParameters()[1].GetPlainString() == ">")
return resultingBoolean + " = ("+value1Code+" > "+value2Code+");\n";
else if ( instruction.GetParameters()[1].GetPlainString() == "<")
return resultingBoolean + " = ("+value1Code+" < "+value2Code+");\n";
else if ( instruction.GetParameters()[1].GetPlainString() == "<=")
return resultingBoolean + " = ("+value1Code+" <= "+value2Code+");\n";
else if ( instruction.GetParameters()[1].GetPlainString() == ">=")
return resultingBoolean + " = ("+value1Code+" >= "+value2Code+");\n";
else if ( instruction.GetParameters()[1].GetPlainString() == "!=")
return resultingBoolean + " = ("+value1Code+" != "+value2Code+");\n";
return "";
};
示例2: callbacks
void Save_Widget::widget_update()
{
callbacks(false);
try
{
if (_plugin)
{
String tmp;
tmp = _plugin->option(
_plugin->options()[Save::COLOR_PROFILE_OPTION]);
tmp >> _options.color_profile;
tmp = _plugin->option(_plugin->options()[Save::FILM_PRINT_OPTION]);
tmp >> _options.film_print;
}
}
catch (String) {}
_color_profile_widget->set(_options.color_profile);
_black_widget->set(_options.film_print.black);
_white_widget->set(_options.film_print.white);
_gamma_widget->set(_options.film_print.gamma);
callbacks(true);
}
示例3: callbacks
void Save_Widget::widget_update()
{
callbacks(false);
try
{
if (_plugin)
{
String tmp;
tmp = _plugin->option(
_plugin->options()[Save::COLOR_PROFILE_OPTION]);
tmp >> _options.color_profile;
tmp = _plugin->option(_plugin->options()[Save::FILM_PRINT_OPTION]);
tmp >> _options.film_print;
tmp = _plugin->option(_plugin->options()[Save::VERSION_OPTION]);
tmp >> _options.version;
tmp = _plugin->option(_plugin->options()[Save::TYPE_OPTION]);
tmp >> _options.type;
tmp = _plugin->option(_plugin->options()[Save::ENDIAN_OPTION]);
tmp >> _options.endian;
}
}
catch (String) {}
_color_profile_widget->set(_options.color_profile);
_black_widget->set(_options.film_print.black);
_white_widget->set(_options.film_print.white);
_gamma_widget->set(_options.film_print.gamma);
_version_widget->set(_options.version);
_type_widget->set(_options.type);
_endian_widget->set(_options.endian);
callbacks(true);
}
示例4: GenerateCode
virtual std::string GenerateCode(gd::Instruction & instruction, gd::EventsCodeGenerator & codeGenerator, gd::EventsCodeGenerationContext & context)
{
std::string expressionCode;
{
gd::CallbacksForGeneratingExpressionCode callbacks(expressionCode, codeGenerator, context);
gd::ExpressionParser parser(instruction.GetParameters()[2].GetPlainString());
if (!parser.ParseStringExpression(codeGenerator.GetPlatform(), codeGenerator.GetProject(), codeGenerator.GetLayout(), callbacks) || expressionCode.empty())
expressionCode = "\"\"";
}
std::string varGetter;
{
VariableCodeGenerationCallbacks callbacks(varGetter, codeGenerator, context, VariableCodeGenerationCallbacks::LAYOUT_VARIABLE);
gd::VariableParser parser(instruction.GetParameters()[0].GetPlainString());
if ( !parser.Parse(callbacks) )
varGetter = "runtimeScene.getVariables().get(\"\")";
}
std::string op = instruction.GetParameters()[1].GetPlainString();
if ( op == "=" )
return varGetter+".setString("+expressionCode+");\n";
else if ( op == "+" )
return varGetter+".concatenate("+expressionCode+");\n";
return "";
};
示例5: callbacks
void Application_Message_Dialog::widget_update()
{
callbacks(false);
_widget->set(String_Util::join(_list, "\n"));
callbacks(true);
}
示例6: wrap
static Wrapped wrap(CallbackArray<NbEvents>& callbacks, Func&& func)
{
callbacks[Idx] = std::unique_ptr<CallbackHandler<Func>>( new CallbackHandler<Func>( std::forward<Func>( func ) ) );
return [](void* opaque, Args... args) -> Ret {
auto boxed = BoxOpaque<NbEvents, Strategy>( opaque, std::forward<Args>( args )... );
assert(boxed.callbacks()[Idx] != nullptr );
auto cbHandler = static_cast<CallbackHandler<Func>*>( boxed.callbacks()[Idx].get() );
return cbHandler->func( boxed, std::forward<Args>(args)... );
};
}
示例7: GenerateCode
virtual std::string GenerateCode(gd::Instruction & instruction, gd::EventsCodeGenerator & codeGenerator, gd::EventsCodeGenerationContext & context)
{
std::string outputCode;
std::vector<std::string> realObjects = codeGenerator.ExpandObjectsName(instruction.GetParameter(0).GetPlainString(), context);
for (unsigned int i = 0;i<realObjects.size();++i)
{
context.SetCurrentObject(realObjects[i]);
context.ObjectsListNeeded(realObjects[i]);
std::string newX, newY;
std::string expression1Code;
{
gd::CallbacksForGeneratingExpressionCode callbacks(expression1Code, codeGenerator, context);
gd::ExpressionParser parser(instruction.GetParameters()[2].GetPlainString());
if (!parser.ParseMathExpression(codeGenerator.GetPlatform(), codeGenerator.GetProject(), codeGenerator.GetLayout(), callbacks) || expression1Code.empty())
expression1Code = "0";
}
std::string expression2Code;
{
gd::CallbacksForGeneratingExpressionCode callbacks(expression2Code, codeGenerator, context);
gd::ExpressionParser parser(instruction.GetParameters()[4].GetPlainString());
if (!parser.ParseMathExpression(codeGenerator.GetPlatform(), codeGenerator.GetProject(), codeGenerator.GetLayout(), callbacks) || expression2Code.empty())
expression2Code = "0";
}
std::string op1 = instruction.GetParameter(1).GetPlainString();
if ( op1 == "=" || op1.empty() )
newX = expression1Code;
else if ( op1 == "/" || op1 == "*" || op1 == "-" || op1 == "+" )
newX = codeGenerator.GetObjectListName(realObjects[i], context)+"[i].getX() "+op1 + expression1Code;
else
return "";
std::string op2 = instruction.GetParameter(3).GetPlainString();
if ( op2 == "=" || op2.empty() )
newY = expression2Code;
else if ( op2 == "/" || op2 == "*" || op2 == "-" || op2 == "+" )
newY = codeGenerator.GetObjectListName(realObjects[i], context)+"[i].getY() "+op2 + expression2Code;
else
return "";
std::string call = codeGenerator.GetObjectListName(realObjects[i], context)+"[i].setPosition("+newX+","+newY+")";
outputCode += "for(var i = 0, len = "+codeGenerator.GetObjectListName(realObjects[i], context)+".length ;i < len;++i) {\n";
outputCode += " "+call+";\n";
outputCode += "}\n";
context.SetNoCurrentObject();
}
return outputCode;
};
示例8: callbacks
void Save_Widget::plugin_update()
{
callbacks(false);
if (_plugin)
{
String tmp;
tmp << _options.codec;
_plugin->option(_plugin->options()[Save::CODEC], &tmp);
}
callbacks(true);
}
示例9: switch
void AttachedDetachedInvocation::dispatch(Element* element)
{
switch (m_which) {
case CustomElementLifecycleCallbacks::AttachedCallback:
callbacks()->attached(element);
break;
case CustomElementLifecycleCallbacks::DetachedCallback:
callbacks()->detached(element);
break;
default:
ASSERT_NOT_REACHED();
}
}
示例10: DJV_DEBUG
void Window::frame_update()
{
DJV_DEBUG(String_Format("Window::frame_update(%%)").arg(int64_t(this)));
DJV_DEBUG_PRINT("frame = " << _frame);
callbacks(false);
_slider->set(_frame);
_widget->set(_movie.image(_frame));
_widget->redraw();
callbacks(true);
}
示例11: if
std::set < std::string > EventsVariablesFinder::FindArgumentsInInstructions(const gd::Platform & platform,
const gd::Project & project, const gd::Layout & layout, const vector < gd::Instruction > & instructions,
bool instructionsAreConditions, const std::string & parameterType, const std::string & objectName)
{
std::set < std::string > results;
for (unsigned int aId = 0;aId < instructions.size();++aId)
{
std::string lastObjectParameter = "";
gd::InstructionMetadata instrInfos = instructionsAreConditions ? MetadataProvider::GetConditionMetadata(platform, instructions[aId].GetType()) :
MetadataProvider::GetActionMetadata(platform, instructions[aId].GetType());
for (unsigned int pNb = 0;pNb < instrInfos.parameters.size();++pNb)
{
//The parameter has the searched type...
if ( instrInfos.parameters[pNb].type == parameterType )
{
//...remember the value of the parameter.
if (objectName.empty() || lastObjectParameter == objectName)
results.insert(instructions[aId].GetParameter(pNb).GetPlainString());
}
//Search in expressions
else if (instrInfos.parameters[pNb].type == "expression")
{
CallbacksForSearchingVariable callbacks(results, parameterType, objectName);
gd::ExpressionParser parser(instructions[aId].GetParameter(pNb).GetPlainString());
parser.ParseMathExpression(platform, project, layout, callbacks);
}
//Search in string expressions
else if (instrInfos.parameters[pNb].type == "string"||instrInfos.parameters[pNb].type == "file" ||instrInfos.parameters[pNb].type == "joyaxis" ||instrInfos.parameters[pNb].type == "color"||instrInfos.parameters[pNb].type == "layer")
{
CallbacksForSearchingVariable callbacks(results, parameterType, objectName);
gd::ExpressionParser parser(instructions[aId].GetParameter(pNb).GetPlainString());
parser.ParseStringExpression(platform, project, layout, callbacks);
}
//Remember the value of the last "object" parameter.
else if (gd::ParameterMetadata::IsObject(instrInfos.parameters[pNb].type))
{
lastObjectParameter = instructions[aId].GetParameter(pNb).GetPlainString();
}
}
if ( !instructions[aId].GetSubInstructions().empty() )
FindArgumentsInInstructions(platform, project, layout, instructions[aId].GetSubInstructions(),
instructionsAreConditions, parameterType);
}
return results;
}
示例12: callbacks
void File_Browser::widget_update()
{
//DJV_DEBUG("File_Browser::widget_update");
//DJV_DEBUG_PRINT("value = " << _value);
//DJV_DEBUG_PRINT("value seq = " << _value.seq());
callbacks(false);
_value_widget->set(_value);
_seq_widget->set(_seq);
callbacks(true);
}
示例13: defined
SceneExtension::SceneExtension()
{
gd::BuiltinExtensionsImplementer::ImplementsSceneExtension(*this);
#if defined(GD_IDE_ONLY)
GetAllExpressions()["Random"].SetFunctionName("GDpriv::CommonInstructions::Random").SetIncludeFile("GDCpp/Extensions/Builtin/CommonInstructionsTools.h");
GetAllStrExpressions()["CurrentSceneName"].SetFunctionName("GetSceneName").SetIncludeFile("GDCpp/Extensions/Builtin/RuntimeSceneTools.h");
GetAllConditions()["DepartScene"].SetFunctionName("SceneJustBegins").SetIncludeFile("GDCpp/Extensions/Builtin/RuntimeSceneTools.h");
GetAllActions()["Scene"].SetFunctionName("ReplaceScene").SetIncludeFile("GDCpp/Extensions/Builtin/RuntimeSceneTools.h");
GetAllActions()["PushScene"].SetFunctionName("PushScene").SetIncludeFile("GDCpp/Extensions/Builtin/RuntimeSceneTools.h");
GetAllActions()["PopScene"].SetFunctionName("PopScene").SetIncludeFile("GDCpp/Extensions/Builtin/RuntimeSceneTools.h");
GetAllActions()["Quit"].SetFunctionName("StopGame").SetIncludeFile("GDCpp/Extensions/Builtin/RuntimeSceneTools.h");
GetAllActions()["SceneBackground"].SetFunctionName("ChangeSceneBackground").SetIncludeFile("GDCpp/Extensions/Builtin/RuntimeSceneTools.h");
GetAllActions()["DisableInputWhenFocusIsLost"].SetFunctionName("DisableInputWhenFocusIsLost").SetIncludeFile("GDCpp/Extensions/Builtin/RuntimeSceneTools.h");
GetAllConditions()["Egal"].codeExtraInformation
.SetCustomCodeGenerator([](gd::Instruction & instruction, gd::EventsCodeGenerator & codeGenerator, gd::EventsCodeGenerationContext & context) {
gd::String value1Code;
{
gd::CallbacksForGeneratingExpressionCode callbacks(value1Code, codeGenerator, context);
gd::ExpressionParser parser(instruction.GetParameters()[0].GetPlainString());
if (!parser.ParseMathExpression(codeGenerator.GetPlatform(), codeGenerator.GetProject(), codeGenerator.GetLayout(), callbacks) || value1Code.empty()) value1Code = "0";
}
gd::String value2Code;
{
gd::CallbacksForGeneratingExpressionCode callbacks(value2Code, codeGenerator, context);
gd::ExpressionParser parser(instruction.GetParameters()[2].GetPlainString());
if (!parser.ParseMathExpression(codeGenerator.GetPlatform(), codeGenerator.GetProject(), codeGenerator.GetLayout(), callbacks) || value2Code.empty()) value2Code = "0";
}
if ( instruction.GetParameters()[1].GetPlainString() == "=" || instruction.GetParameters()[1].GetPlainString().empty() )
return "conditionTrue = ("+value1Code+" == "+value2Code+");\n";
else if ( instruction.GetParameters()[1].GetPlainString() == ">")
return "conditionTrue = ("+value1Code+" > "+value2Code+");\n";
else if ( instruction.GetParameters()[1].GetPlainString() == "<")
return "conditionTrue = ("+value1Code+" < "+value2Code+");\n";
else if ( instruction.GetParameters()[1].GetPlainString() == "<=")
return "conditionTrue = ("+value1Code+" <= "+value2Code+");\n";
else if ( instruction.GetParameters()[1].GetPlainString() == ">=")
return "conditionTrue = ("+value1Code+" >= "+value2Code+");\n";
else if ( instruction.GetParameters()[1].GetPlainString() == "!=")
return "conditionTrue = ("+value1Code+" != "+value2Code+");\n";
return gd::String("");
});
#endif
}
示例14: reportError
void DOMFileSystemBase::copy(const EntryBase* source,
EntryBase* parent,
const String& newName,
EntryCallback* successCallback,
ErrorCallbackBase* errorCallback,
SynchronousType synchronousType) {
if (!fileSystem()) {
reportError(errorCallback, FileError::kAbortErr);
return;
}
String destinationPath;
if (!verifyAndGetDestinationPathForCopyOrMove(source, parent, newName,
destinationPath)) {
reportError(errorCallback, FileError::kInvalidModificationErr);
return;
}
std::unique_ptr<AsyncFileSystemCallbacks> callbacks(EntryCallbacks::create(
successCallback, errorCallback, m_context, parent->filesystem(),
destinationPath, source->isDirectory()));
callbacks->setShouldBlockUntilCompletion(synchronousType == Synchronous);
fileSystem()->copy(createFileSystemURL(source),
parent->filesystem()->createFileSystemURL(destinationPath),
std::move(callbacks));
}
示例15: m_mtx_wrapper
inline windows_named_mutex::windows_named_mutex
(open_or_create_t, const char *name, const permissions &perm)
: m_mtx_wrapper()
{
named_mut_callbacks callbacks(m_mtx_wrapper);
m_named_sync.open_or_create(DoOpenOrCreate, name, perm, callbacks);
}