Skip to content
Snippets Groups Projects
Commit 9085029d authored by alexey.stratulat's avatar alexey.stratulat
Browse files

[+] Added functionality, deleting data from the list.

parent 6e754a10
No related branches found
No related tags found
1 merge request!27Support update sdk and merge plugins repo
......@@ -32,6 +32,7 @@ bool dap_chain_plugins_list_check_load_plugins(dap_chain_plugins_list_char_t *li
void dap_chain_plugins_list_add(PyObject *module, const char *name);
void dap_chain_plugins_list_name_del(const char *name);
int dap_chain_plugins_list_name_cmp(dap_chain_plugin_list_module_t *element, const char *name);
#ifdef __cplusplus
extern "C" {
......
......@@ -19,6 +19,8 @@ typedef struct dap_chain_plugins_list_char{
struct dap_chain_plugins_list_char *next;
}dap_chain_plugins_list_char_t;
void dap_chain_plugins_list_char_delete_all(dap_chain_plugins_list_char_t *list);
typedef struct dap_list_manifest{
char *name;
char *version;
......@@ -30,17 +32,25 @@ typedef struct dap_list_manifest{
dap_chain_plugins_list_manifest_t* manifests;
int dap_chain_plugins_manifest_name_cmp(dap_chain_plugins_list_manifest_t *man, const char *name);
dap_chain_plugins_list_manifest_t *dap_chain_plugins_manifest_new(const char *name, const char *version, const dap_chain_plugins_list_char_t *dep, const char *author,
const char *description);
void dap_chain_plugins_manifest_list_create();
dap_chain_plugins_list_manifest_t* dap_chain_plugins_manifests_get_list();
dap_chain_plugins_list_manifest_t *dap_chain_plugins_manifest_list_get_name(const char *name);
char* dap_chain_plugins_manifests_get_list_dependencyes(dap_chain_plugins_list_manifest_t *element);
dap_chain_plugins_list_manifest_t* dap_chain_plugins_add_manifest_from_file(const char *file_path);
bool dap_chain_plugins_manifest_list_add_from_file(const char *path_file);
bool dap_chain_plugins_manifest_list_delete_name(const char *name);
void dap_chain_plugins_manifest_list_delete_all(void);
#ifdef __cplusplus
}
#endif
......
......@@ -55,3 +55,7 @@ void dap_chain_plugins_list_name_del(const char *name){
}
}
int dap_chain_plugins_list_name_cmp(dap_chain_plugin_list_module_t *element, const char *name){
return strcmp(element->name, name);
}
#include "dap_chain_plugins_manifest.h"
void dap_chain_plugins_list_char_delete_all(dap_chain_plugins_list_char_t *list){
dap_chain_plugins_list_char_t *element;
dap_chain_plugins_list_char_t *tmp;
LL_FOREACH_SAFE(list, element, tmp){
DAP_FREE(element->value);
LL_DELETE(list, element);
}
}
dap_chain_plugins_list_manifest_t *dap_chain_plugins_manifest_new(const char *name, const char *version, const dap_chain_plugins_list_char_t *dep, const char *author,
const char *description){
dap_chain_plugins_list_manifest_t *man = (dap_chain_plugins_list_manifest_t*)DAP_NEW(dap_chain_plugins_list_manifest_t);
......@@ -34,6 +43,10 @@ void dap_chain_plugins_manifest_list_create(){
manifests = NULL;
}
int dap_chain_plugins_manifest_name_cmp(dap_chain_plugins_list_manifest_t *man, const char *name){
return dap_strcmp(man->name, name);
}
dap_chain_plugins_list_manifest_t* dap_chain_plugins_add_manifest_from_file(const char *file_path){
//READ File in char
log_it(L_INFO, "Parse json file");
......@@ -75,6 +88,33 @@ dap_chain_plugins_list_manifest_t* dap_chain_plugins_manifests_get_list(){
return manifests;
}
dap_chain_plugins_list_manifest_t *dap_chain_plugins_manifest_list_get_name(const char *name){
dap_chain_plugins_list_manifest_t *element;
LL_SEARCH(manifests, element, name, dap_chain_plugins_manifest_name_cmp);
return element;
}
char* dap_chain_plugins_manifests_get_list_dependencyes(dap_chain_plugins_list_manifest_t *element){
char *result = NULL;
dap_chain_plugins_list_char_t *e1;
LL_FOREACH(element->dependencys, e1){
char *new_result = dap_strjoin(NULL, result, e1->value, ", ");
DAP_FREE(result);
result = new_result;
}
if (result != NULL){
size_t size_result = dap_strlen(result);
size_t new_size_result = size_result - 2;
char *new_result = DAP_NEW_SIZE(char, new_size_result);
memcpy(new_result, result, new_size_result);
DAP_FREE(result);
result = new_result;
} else {
result = "";
}
return result;
}
bool dap_chain_plugins_manifest_list_add_from_file(const char *file_path){
dap_chain_plugins_list_manifest_t *manifest = dap_chain_plugins_add_manifest_from_file(file_path);
if (manifest == NULL)
......@@ -82,3 +122,30 @@ bool dap_chain_plugins_manifest_list_add_from_file(const char *file_path){
dap_chain_plugins_manifest_list_add_manifest(manifest);
return true;
}
bool dap_chain_plugins_manifest_list_delete_name(const char *name){
dap_chain_plugins_list_manifest_t *element;
LL_SEARCH(manifests, element, name, dap_chain_plugins_manifest_name_cmp);
if (element == NULL)
return false;
DAP_FREE(element->name);
DAP_FREE(element->version);
DAP_FREE(element->author);
DAP_FREE(element->description);
dap_chain_plugins_list_char_delete_all(element->dependencys);
LL_DELETE(manifests, element);
return true;
}
void dap_chain_plugins_manifest_list_delete_all(void){
dap_chain_plugins_list_manifest_t *element;
dap_chain_plugins_list_manifest_t *tmp;
LL_FOREACH_SAFE(manifests, element, tmp){
DAP_FREE(element->name);
DAP_FREE(element->version);
DAP_FREE(element->author);
DAP_FREE(element->description);
dap_chain_plugins_list_char_delete_all(element->dependencys);
LL_DELETE(manifests, element);
}
// LL_FOREACH_SAFE()
}
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