blob: d8fc60f99c0b46f6c47843ff95f9695e32bcbd90 [file] [log] [blame]
//===----- CGObjCRuntime.h - Emit LLVM Code from ASTs for a Module --------===//
//
// The LLVM Compiler Infrastructure
//
// This file is distributed under the University of Illinois Open Source
// License. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
//
// This provides an abstract class for Objective-C code generation. Concrete
// subclasses of this implement code generation for specific Objective-C
// runtime libraries.
//
//===----------------------------------------------------------------------===//
#ifndef CLANG_CODEGEN_OBCJRUNTIME_H
#define CLANG_CODEGEN_OBCJRUNTIME_H
namespace llvm {
class LLVMFoldingBuilder;
class Constant;
class Type;
class Value;
class Module;
}
namespace clang {
namespace CodeGen {
// Implements runtime-specific code generation functions
class CGObjCRuntime {
public:
virtual ~CGObjCRuntime();
// Generate an Objective-C message send operation
virtual llvm::Value *generateMessageSend(llvm::LLVMFoldingBuilder &Builder,
const llvm::Type *ReturnTy,
llvm::Value *Receiver,
llvm::Constant *Selector,
llvm::Value** ArgV,
unsigned ArgC) = 0;
};
CGObjCRuntime *CreateObjCRuntime(llvm::Module &M);
}
}
#endif