C FFI
Please Read First
Before proceeding, make sure to read this Overview page to get a better understanding of the documentation.
Artifacts
Shared library and header file are available on the release page
Header file
pulumi_gestalt.h
#ifndef __PULUMI_H__
#define __PULUMI_H__
/* Don't modify this file manually. It is autogenerated by cbindgen. */
#include <stdarg.h>
#include <stdbool.h>
#include <stdint.h>
#include <stdlib.h>
typedef struct pulumi_output_t pulumi_output_t;
typedef struct pulumi_register_output_t pulumi_register_output_t;
typedef struct pulumi_engine_t pulumi_engine_t;
/**
* Arguments: Engine context, Function context, Serialized JSON value
* Returned string must represent a JSON value;
* Library will free the returned string
*/
typedef char *(*pulumi_mapping_function_t)(const void*, const void*, const char*);
typedef struct pulumi_object_field_t {
const char *name;
const struct pulumi_output_t *value;
} pulumi_object_field_t;
typedef struct pulumi_register_resource_request_t {
const char *type_;
const char *name;
const char *version;
const struct pulumi_object_field_t *object;
uintptr_t object_len;
} pulumi_register_resource_request_t;
#ifdef __cplusplus
extern "C" {
#endif // __cplusplus
struct pulumi_engine_t *create_engine(const void *context);
void free_engine(struct pulumi_engine_t *t);
struct pulumi_output_t *create_output(struct pulumi_engine_t *pulumi_engine,
const char *value,
bool secret);
void add_export(const struct pulumi_output_t *value, const char *name);
void finish(struct pulumi_engine_t *pulumi_engine);
struct pulumi_output_t *pulumi_map(struct pulumi_engine_t *pulumi_engine,
const struct pulumi_output_t *output,
const void *function_context,
pulumi_mapping_function_t function);
struct pulumi_output_t *pulumi_get_output(struct pulumi_register_output_t *custom_register_output_id,
const char *field_name);
struct pulumi_register_output_t *pulumi_register_resource(struct pulumi_engine_t *pulumi_engine,
const struct pulumi_register_resource_request_t *request);
#ifdef __cplusplus
} // extern "C"
#endif // __cplusplus
#endif /* __PULUMI_H__ */
Cleanup
Output
and CompositeOutput
does not need to be explicitly cleaned up. They are automatically managed by the SDK and will be destroyed when the context is destroyed.