Esempio n. 1
0
void 
Entity::Serialize(
    Stream *stream, Repository* repo) const 
{
    if (GetMetaClass()->IsSerializable() == false)
    {
        vdLogError(
            "Unable to serialize an instance of type '%s': no serialization support!", 
            GetMetaClass()->GetClassName().c_str()
        );
    }
    repo->Serialize(stream, m_Parent);
}
CodeGen::RValue
CGObjCJit::GenerateMessageSendSuper(CodeGen::CodeGenFunction &CGF,
                                    ReturnValueSlot Return,
                                    QualType ResultType,
                                    Selector Sel,
                                    const ObjCInterfaceDecl *Class,
                                    bool isCategoryImpl,
                                    llvm::Value *Receiver,
                                    bool IsClassMessage,
                                    const CodeGen::CallArgList &CallArgs,
                                    const ObjCMethodDecl *Method) {
  llvm::Value *ReceiverClass;
  if (IsClassMessage)
    if (isCategoryImpl) {
      ReceiverClass = GetClass(CGF, Class);
    } else {
      ReceiverClass = GetMetaClass(CGF.Builder, Class);
    }
  else {
    ReceiverClass = GetClass(CGF, Class->getSuperClass());
  }

  return EmitMessageSend(CGF, Return, ResultType, Sel,
                         Receiver, ReceiverClass,
                         CallArgs, Method);
}
Esempio n. 3
0
vd::string 
Object::ToString() const
{
    std::ostringstream oss;
    oss << GetMetaClass()->GetIdentifier().ToString();
    oss << "[unknown]";
    return oss.str();
}
CodeGen::RValue
CGObjCJit::GenerateMessageSend(CodeGen::CodeGenFunction &CGF,
                               ReturnValueSlot Return,
                               QualType ResultType,
                               Selector Sel,
                               llvm::Value *Receiver,
                               const CallArgList &CallArgs,
                               const ObjCInterfaceDecl *Class,
                               const ObjCMethodDecl *Method) {
  llvm::Value *ReceiverObj =
      CGF.Builder.CreateBitCast(Receiver, ObjCTypes.ObjectPtrTy);
  llvm::Value *ReceiverClass;
  if (Class) {
    ReceiverClass = GetMetaClass(CGF.Builder, Class);
  } else {
    ReceiverClass = CGF.Builder.CreateCall(fn_object_getClass, ReceiverObj);
  }

  return EmitMessageSend(CGF, Return, ResultType, Sel,
                         ReceiverObj, ReceiverClass,
                         CallArgs, Method);
}
//---------------------------------------------------------------------------
UEProperty::Info UEClassProperty::GetInfo() const
{
	return Info::Create(PropertyType::Primitive, sizeof(void*), false, "class " + MakeValidName(GetMetaClass().GetNameCPP()) + "*");
}