Skip to content
Snippets Groups Projects
Commit 49dc812f authored by Henrik tom Wörden's avatar Henrik tom Wörden
Browse files

ENH: add to_string for extern C

parent 3e95cd2e
No related branches found
No related tags found
No related merge requests found
Pipeline #12672 passed with warnings
Pipeline: caosdb-cppinttest

#12678

    ......@@ -333,6 +333,7 @@ typedef struct {
    } caosdb_entity_message;
    // GETTERS FOR EVERYTHING
    int caosdb_entity_entity_to_string(caosdb_entity_entity *entity, char **out);
    int caosdb_entity_entity_get_id(caosdb_entity_entity *entity, char **out);
    int caosdb_entity_entity_get_role(caosdb_entity_entity *entity, char **out);
    int caosdb_entity_entity_get_name(caosdb_entity_entity *entity, char **out);
    ......@@ -376,6 +377,7 @@ int caosdb_entity_entity_get_parents_size(caosdb_entity_entity *entity, int *out
    int caosdb_entity_entity_get_parent(caosdb_entity_entity *entity, caosdb_entity_parent *out,
    int index);
    int caosdb_entity_property_to_string(caosdb_entity_property *entity, char **out);
    int caosdb_entity_property_get_id(caosdb_entity_property *property, char **out);
    int caosdb_entity_property_get_name(caosdb_entity_property *property, char **out);
    int caosdb_entity_property_get_description(caosdb_entity_property *property, char **out);
    ......@@ -401,6 +403,7 @@ int caosdb_entity_property_get_string_list_value_at(caosdb_entity_property *prop
    const int index);
    int caosdb_entity_property_get_value_list_length(caosdb_entity_property *property, int *out);
    int caosdb_entity_parent_to_string(caosdb_entity_parent *entity, char **out);
    int caosdb_entity_parent_get_id(caosdb_entity_parent *parent, char **out);
    int caosdb_entity_parent_get_name(caosdb_entity_parent *parent, char **out);
    int caosdb_entity_parent_get_description(caosdb_entity_parent *parent, char **out);
    ......
    ......@@ -584,6 +584,16 @@ ERROR_RETURN_CODE(GENERIC_ERROR, int caosdb_entity_delete_parent(caosdb_entity_p
    })
    CAOSDB_ENTITY_GET(id, GetId())
    ERROR_RETURN_CODE(GENERIC_ERROR,
    int caosdb_entity_entity_to_string(caosdb_entity_entity *entity, char **out), {
    auto *wrapped_entity = WRAPPED_ENTITY_CAST(entity);
    std::string role_str = wrapped_entity->ToString();
    auto *tmp = (char *)malloc(sizeof(char) * role_str.length() + 1);
    strcpy(tmp, role_str.c_str());
    delete[] * out;
    *out = tmp;
    return 0;
    })
    ERROR_RETURN_CODE(GENERIC_ERROR,
    int caosdb_entity_entity_get_role(caosdb_entity_entity *entity, char **out), {
    auto *wrapped_entity = WRAPPED_ENTITY_CAST(entity);
    ......@@ -839,10 +849,30 @@ ERROR_RETURN_CODE(GENERIC_ERROR,
    })
    CAOSDB_PARENT_GET(id, GetId())
    ERROR_RETURN_CODE(GENERIC_ERROR,
    int caosdb_entity_parent_to_string(caosdb_entity_parent *entity, char **out), {
    auto *wrapped_entity = WRAPPED_PARENT_CAST(entity);
    std::string role_str = wrapped_entity->ToString();
    auto *tmp = (char *)malloc(sizeof(char) * role_str.length() + 1);
    strcpy(tmp, role_str.c_str());
    delete[] * out;
    *out = tmp;
    return 0;
    })
    CAOSDB_PARENT_GET(name, GetName())
    CAOSDB_PARENT_GET(description, GetDescription())
    CAOSDB_PROPERTY_GET(id, GetId())
    ERROR_RETURN_CODE(GENERIC_ERROR,
    int caosdb_entity_property_to_string(caosdb_entity_property *entity, char **out), {
    auto *wrapped_entity = WRAPPED_PROPERTY_CAST(entity);
    std::string role_str = wrapped_entity->ToString();
    auto *tmp = (char *)malloc(sizeof(char) * role_str.length() + 1);
    strcpy(tmp, role_str.c_str());
    delete[] * out;
    *out = tmp;
    return 0;
    })
    CAOSDB_PROPERTY_GET(name, GetName())
    CAOSDB_PROPERTY_GET(description, GetDescription())
    ......
    ......@@ -152,6 +152,9 @@ TEST_F(test_ccaosdb, test_entity) {
    EXPECT_EQ(return_code, 0);
    EXPECT_EQ(strcmp(out, "length"), 0);
    return_code = caosdb_entity_entity_to_string(&entity, &out);
    EXPECT_EQ(return_code, 0);
    // test call without validation of result
    return_code = caosdb_entity_entity_set_role(&entity, "FILE");
    EXPECT_EQ(return_code, 0);
    ......@@ -170,6 +173,7 @@ TEST_F(test_ccaosdb, test_entity) {
    caosdb_entity_entity_get_role(&entity, &out);
    EXPECT_EQ(strcmp(out, "PROPERTY"), 0);
    caosdb_entity_entity_set_description(&entity, "The length of an object");
    caosdb_entity_entity_get_description(&entity, &out);
    EXPECT_EQ(strcmp(out, "The length of an object"), 0);
    ......@@ -241,6 +245,9 @@ TEST_F(test_ccaosdb, test_property) {
    caosdb_entity_property_get_id(&property, &out);
    EXPECT_EQ(strcmp(out, "some_id"), 0);
    return_code = caosdb_entity_property_to_string(&property, &out);
    EXPECT_EQ(return_code, 0);
    caosdb_entity_property_get_name(&property, &out);
    EXPECT_EQ(strcmp(out, "some_name"), 0);
    ......@@ -341,6 +348,7 @@ TEST_F(test_ccaosdb, test_entity_with_parent_and_property) {
    char *in = nullptr; // NOLINT
    char *out = nullptr; // NOLINT
    // cannot assign an already assigned property
    return_code = caosdb_entity_entity_get_property(&entity, &input_property, 0);
    EXPECT_EQ(return_code, caosdb::StatusCode::EXTERN_C_ASSIGNMENT_ERROR);
    ......@@ -382,6 +390,9 @@ TEST_F(test_ccaosdb, test_entity_with_parent_and_property) {
    caosdb_entity_parent_get_name(&output_parent, &out);
    EXPECT_EQ(strcmp(in, out), 0);
    return_code = caosdb_entity_parent_to_string(&input_parent, &out);
    EXPECT_EQ(return_code, 0);
    // Delete everything
    return_code = caosdb_entity_delete_parent(&input_parent);
    EXPECT_EQ(return_code, 0);
    ......
    0% Loading or .
    You are about to add 0 people to the discussion. Proceed with caution.
    Finish editing this message first!
    Please register or to comment