## OrcCompiler OrcCompiler — Compile Orc programs |

## Functions

#define | ORC_COMPILER_ERROR()
#define | ORC_COMPILE_RESULT_IS_FATAL()
#define | ORC_COMPILE_RESULT_IS_SUCCESSFUL()
#define | ORC_ASM_CODE()
void | orc_compiler_append_code ()
int | orc_compiler_label_new ()

## Types and Values

enum | OrcCompileResult
| OrcCompiler
| OrcConstant
#define | ORC_ENABLE_ASM_CODE

## Description

OrcCompiler is the object used to convert Orc programs contained in an OrcProgram object into assembly code and object code.

The OrcCompileResult enum is used to indicate whether or not a compilation attempt was successful or not. The macros `ORC_COMPILE_RESULT_IS_SUCCESSFUL()` and `ORC_COMPILE_RESULT_IS_FATAL()` should be used instead of checking values directly.

When a program is compiled, the compiler calls the functions contained in various OrcRule structures. These functions generate assembly and object instructions by calling `ORC_ASM_CODE()` or functions that use `ORC_ASM_CODE()` internally.

## Functions

### ORC_COMPILER_ERROR()

    #define             ORC_COMPILER_ERROR(compiler, ...)

### ORC_COMPILE_RESULT_IS_FATAL()

    #define ORC_COMPILE_RESULT_IS_FATAL(x) ((x) >= 0x200)

### ORC_COMPILE_RESULT_IS_SUCCESSFUL()

    #define ORC_COMPILE_RESULT_IS_SUCCESSFUL(x) ((x) < 0x100)

### ORC_ASM_CODE()

    #define ORC_ASM_CODE(compiler,...) orc_compiler_append_code(compiler, __VA_ARGS__)

### orc_compiler_append_code ()

    void
    orc_compiler_append_code (OrcCompiler *p,
                              const char *fmt);

Generates a string using `sprintf()` on the given format and arguments, and appends that string to the generated assembly code for the compiler.

This function is used by the `ORC_ASM_CODE()` macro.

This function is useful in a function implementing an OrcRule or implementing a target.

#### Parameters

p | an OrcCompiler object |
fmt | a printf-style format string |

### orc_compiler_label_new ()

    int
    orc_compiler_label_new (OrcCompiler *compiler);

## Types and Values

### enum OrcCompileResult

#### Members

ORC_COMPILE_RESULT_OK |  |
ORC_COMPILE_RESULT_UNKNOWN_COMPILE |  |
ORC_COMPILE_RESULT_MISSING_RULE |  |
ORC_COMPILE_RESULT_UNKNOWN_PARSE |  |
ORC_COMPILE_RESULT_PARSE |  |
ORC_COMPILE_RESULT_VARIABLE |  |

### OrcCompiler

    typedef struct {
    } OrcCompiler;

The OrcCompiler structure has no public members

### OrcConstant

    typedef struct {
    } OrcConstant;

The OrcConstant structure has no public members

### ORC_ENABLE_ASM_CODE

    #define ORC_ENABLE_ASM_CODE