// wrapAnnotation.cpp
// This file is generated by Shroud 0.12.2. Do not edit.
#include "wrapAnnotation.h"

#include "caliper/cali.h"
#include <cstddef>

// splicer begin class.Annotation.CXX_definitions
// splicer end class.Annotation.CXX_definitions

extern "C" {

// splicer begin class.Annotation.C_definitions
// splicer end class.Annotation.C_definitions

cali_Annotation * cali_Annotation_new(const char * key,
    cali_Annotation * SHadow_rv)
{
    // splicer begin class.Annotation.method.new
    cali::Annotation *SHCXX_rv = new cali::Annotation(key);
    SHadow_rv->addr = static_cast<void *>(SHCXX_rv);
    SHadow_rv->idtor = 2;
    return SHadow_rv;
    // splicer end class.Annotation.method.new
}

cali_Annotation * cali_Annotation_new_with_properties(const char * key,
    int properties, cali_Annotation * SHadow_rv)
{
    // splicer begin class.Annotation.method.new_with_properties
    cali::Annotation *SHCXX_rv = new cali::Annotation(key, properties);
    SHadow_rv->addr = static_cast<void *>(SHCXX_rv);
    SHadow_rv->idtor = 2;
    return SHadow_rv;
    // splicer end class.Annotation.method.new_with_properties
}

void cali_Annotation_delete(cali_Annotation * self)
{
    cali::Annotation *SH_this = static_cast<cali::Annotation *>
        (self->addr);
    // splicer begin class.Annotation.method.delete
    delete SH_this;
    self->addr = nullptr;
    // splicer end class.Annotation.method.delete
}

void cali_Annotation_begin_int(cali_Annotation * self, int val)
{
    cali::Annotation *SH_this = static_cast<cali::Annotation *>
        (self->addr);
    // splicer begin class.Annotation.method.begin_int
    SH_this->begin(val);
    // splicer end class.Annotation.method.begin_int
}

void cali_Annotation_begin_string(cali_Annotation * self,
    const char * val)
{
    cali::Annotation *SH_this = static_cast<cali::Annotation *>
        (self->addr);
    // splicer begin class.Annotation.method.begin_string
    SH_this->begin(val);
    // splicer end class.Annotation.method.begin_string
}

void cali_Annotation_set_int(cali_Annotation * self, int val)
{
    cali::Annotation *SH_this = static_cast<cali::Annotation *>
        (self->addr);
    // splicer begin class.Annotation.method.set_int
    SH_this->set(val);
    // splicer end class.Annotation.method.set_int
}

void cali_Annotation_set_string(cali_Annotation * self,
    const char * val)
{
    cali::Annotation *SH_this = static_cast<cali::Annotation *>
        (self->addr);
    // splicer begin class.Annotation.method.set_string
    SH_this->set(val);
    // splicer end class.Annotation.method.set_string
}

void cali_Annotation_end(cali_Annotation * self)
{
    cali::Annotation *SH_this = static_cast<cali::Annotation *>
        (self->addr);
    // splicer begin class.Annotation.method.end
    SH_this->end();
    // splicer end class.Annotation.method.end
}

}  // extern "C"
