本文整理汇总了C++中JSBClass::IsInterface方法的典型用法代码示例。如果您正苦于以下问题:C++ JSBClass::IsInterface方法的具体用法?C++ JSBClass::IsInterface怎么用?C++ JSBClass::IsInterface使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类JSBClass
的用法示例。
在下文中一共展示了JSBClass::IsInterface方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: WriteManagedFunction
void CSFunctionWriter::WriteManagedFunction(String& source)
{
JSBClass* klass = function_->GetClass();
JSBPackage* package = klass->GetPackage();
String sig;
String returnType = CSTypeHelper::GetManagedTypeString(function_->GetReturnType());
GenManagedFunctionParameters(sig);
String line = klass->IsInterface() ? "" : "public ";
if (function_->IsStatic())
{
line += "static ";
}
bool marked = false;
JSBClass* baseClass = klass->GetBaseClass();
if (baseClass)
{
JSBFunction* override = baseClass->MatchFunction(function_, true);
if (override)
{
marked = true;
if (override->IsVirtual())
line += "override ";
else
line += "new ";
}
}
示例2: WriteManagedPInvokeFunctionSignature
void CSFunctionWriter::WriteManagedPInvokeFunctionSignature(String& source)
{
JSBClass* klass = function_->GetClass();
JSBPackage* package = klass->GetPackage();
if (klass->IsInterface())
return;
source += "\n";
// CoreCLR has pinvoke security demand code commented out, so we do not (currently) need this optimization:
// https://github.com/dotnet/coreclr/issues/1605
// line = "[SuppressUnmanagedCodeSecurity]\n";
// source += IndentLine(line);
String line = "[DllImport (Constants.LIBNAME, CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Ansi)]\n";
source += IndentLine(line);
String returnType = CSTypeHelper::GetPInvokeTypeString(function_->GetReturnType());
// handled by out parameter
if (function_->GetReturnType() && function_->GetReturnType()->type_->asVectorType())
returnType = "void";
if (returnType == "bool")
{
// default boolean marshal is 4 byte windows type BOOL and not 1 byte bool
// https://blogs.msdn.microsoft.com/jaredpar/2008/10/14/pinvoke-and-bool-or-should-i-say-bool/
source += IndentLine("[return: MarshalAs(UnmanagedType.I1)]\n");
}
if (returnType == "string")
returnType = "IntPtr";
if (function_->IsConstructor())
returnType = "IntPtr";
const Vector<JSBFunctionType*>& parameters = function_->GetParameters();
Vector<String> args;
if (!function_->IsConstructor() && !function_->IsStatic())
{
args.Push("IntPtr self");
}
if (parameters.Size())
{
for (unsigned int i = 0; i < parameters.Size(); i++)
{
JSBFunctionType* ptype = parameters.At(i);
String name = ptype->name_;
if (name == "object")
name = "_object";
else if (name == "readonly")
name = "readOnly";
else if (name == "params")
name = "parameters";
// ignore "Context" parameters
if (ptype->type_->asClassType())
{
JSBClassType* classType = ptype->type_->asClassType();
JSBClass* klass = classType->class_;
if (klass->GetName() == "Context")
{
continue;
}
if (klass->IsNumberArray())
{
args.Push("ref " + klass->GetName() + " " + name);
}
else
{
args.Push("IntPtr " + name);
}
}
else
{
args.Push(CSTypeHelper::GetPInvokeTypeString(ptype) + " " + name);
}
}
}
if (function_->GetReturnClass())
{
JSBClass* retClass = function_->GetReturnClass();
if (retClass->IsNumberArray())
{
args.Push("ref " + retClass->GetName() + " retValue");
}
}
else if (function_->GetReturnType() && function_->GetReturnType()->type_->asVectorType())
{
//.........这里部分代码省略.........