correct gcc warnings

This commit is contained in:
Alexey Fedoseev
2024-01-06 02:09:00 +03:00
parent 57a52e6456
commit a3653b7dcc
4 changed files with 90 additions and 100 deletions

View File

@@ -14,7 +14,7 @@ LIB_OBJECTS := $(patsubst %.c, %.o, $(LIB_SOURCES))
TEST_OBJECTS := $(patsubst %.c, %.o, $(TEST_SOURCES)) TEST_OBJECTS := $(patsubst %.c, %.o, $(TEST_SOURCES))
ifeq ($(DEBUG), 1) ifeq ($(DEBUG), 1)
CFLAGS := -fPIC -g3 -D__DEBUG__ CFLAGS := -Wall -Wstrict-prototypes -Wmissing-prototypes -Wshadow -Wconversion -fPIC -g3 -D__DEBUG__
else else
CFLAGS := -fPIC CFLAGS := -fPIC
endif endif

View File

@@ -77,10 +77,10 @@
* Utility functions * Utility functions
* ----------------------------------------------------------------------------- */ * ----------------------------------------------------------------------------- */
int cyberiada_copy_string(char** target, unsigned int* size, const char* source) static int cyberiada_copy_string(char** target, size_t* size, const char* source)
{ {
char* target_str; char* target_str;
unsigned int strsize; size_t strsize;
if (!source) if (!source)
return CYBERIADA_BAD_PARAMETER; return CYBERIADA_BAD_PARAMETER;
strsize = strlen(source); strsize = strlen(source);
@@ -99,7 +99,7 @@ int cyberiada_copy_string(char** target, unsigned int* size, const char* source)
* Graph manipulation functions * Graph manipulation functions
* ----------------------------------------------------------------------------- */ * ----------------------------------------------------------------------------- */
CyberiadaNode* cyberiada_graph_find_node(CyberiadaNode* root, const char* id) static CyberiadaNode* cyberiada_graph_find_node(CyberiadaNode* root, const char* id)
{ {
CyberiadaNode* node; CyberiadaNode* node;
CyberiadaNode* found; CyberiadaNode* found;
@@ -117,7 +117,7 @@ CyberiadaNode* cyberiada_graph_find_node(CyberiadaNode* root, const char* id)
return NULL; return NULL;
} }
CyberiadaNode* cyberiada_new_node(const char* id) static CyberiadaNode* cyberiada_new_node(const char* id)
{ {
CyberiadaNode* new_node = (CyberiadaNode*)malloc(sizeof(CyberiadaNode)); CyberiadaNode* new_node = (CyberiadaNode*)malloc(sizeof(CyberiadaNode));
cyberiada_copy_string(&(new_node->id), &(new_node->id_len), id); cyberiada_copy_string(&(new_node->id), &(new_node->id_len), id);
@@ -134,7 +134,7 @@ CyberiadaNode* cyberiada_new_node(const char* id)
return new_node; return new_node;
} }
CyberiadaEdge* cyberiada_new_edge(const char* id, CyberiadaNode* source, CyberiadaNode* target) static CyberiadaEdge* cyberiada_new_edge(const char* id, CyberiadaNode* source, CyberiadaNode* target)
{ {
CyberiadaEdge* new_edge = (CyberiadaEdge*)malloc(sizeof(CyberiadaEdge)); CyberiadaEdge* new_edge = (CyberiadaEdge*)malloc(sizeof(CyberiadaEdge));
cyberiada_copy_string(&(new_edge->id), &(new_edge->id_len), id); cyberiada_copy_string(&(new_edge->id), &(new_edge->id_len), id);
@@ -148,7 +148,7 @@ CyberiadaEdge* cyberiada_new_edge(const char* id, CyberiadaNode* source, Cyberia
return new_edge; return new_edge;
} }
int cyberiada_graph_add_sibling_node(CyberiadaNode* sibling, CyberiadaNode* new_node) static int cyberiada_graph_add_sibling_node(CyberiadaNode* sibling, CyberiadaNode* new_node)
{ {
CyberiadaNode* node = sibling; CyberiadaNode* node = sibling;
if (!new_node) { if (!new_node) {
@@ -160,7 +160,7 @@ int cyberiada_graph_add_sibling_node(CyberiadaNode* sibling, CyberiadaNode* new_
return CYBERIADA_NO_ERROR; return CYBERIADA_NO_ERROR;
} }
int cyberiada_graph_add_edge(CyberiadaSM* sm, const char* id, CyberiadaNode* source, CyberiadaNode* target) static int cyberiada_graph_add_edge(CyberiadaSM* sm, const char* id, CyberiadaNode* source, CyberiadaNode* target)
{ {
CyberiadaEdge* last_edge; CyberiadaEdge* last_edge;
CyberiadaEdge* new_edge; CyberiadaEdge* new_edge;
@@ -178,7 +178,7 @@ int cyberiada_graph_add_edge(CyberiadaSM* sm, const char* id, CyberiadaNode* sou
return CYBERIADA_NO_ERROR; return CYBERIADA_NO_ERROR;
} }
CyberiadaEdge* cyberiada_graph_find_last_edge(CyberiadaSM* sm) static CyberiadaEdge* cyberiada_graph_find_last_edge(CyberiadaSM* sm)
{ {
CyberiadaEdge* edge; CyberiadaEdge* edge;
if (!sm) { if (!sm) {
@@ -193,7 +193,7 @@ CyberiadaEdge* cyberiada_graph_find_last_edge(CyberiadaSM* sm)
* The Cyberiada GraphML library fucntions declarations * The Cyberiada GraphML library fucntions declarations
* ----------------------------------------------------------------------------- */ * ----------------------------------------------------------------------------- */
CyberiadaSM* cyberiada_create_sm() CyberiadaSM* cyberiada_create_sm(void)
{ {
CyberiadaSM* sm = (CyberiadaSM*)malloc(sizeof(CyberiadaSM)); CyberiadaSM* sm = (CyberiadaSM*)malloc(sizeof(CyberiadaSM));
cyberiada_init_sm(sm); cyberiada_init_sm(sm);
@@ -229,11 +229,11 @@ static int cyberiada_destroy_node(CyberiadaNode* node)
if(n->action) free(n->action); if(n->action) free(n->action);
} while (node); } while (node);
} }
return CYBERIADA_NO_ERROR;
} }
int cyberiada_cleanup_sm(CyberiadaSM* sm) int cyberiada_cleanup_sm(CyberiadaSM* sm)
{ {
CyberiadaNode* n;
CyberiadaEdge *edge, *e; CyberiadaEdge *edge, *e;
CyberiadaPolyline *polyline, *pl; CyberiadaPolyline *polyline, *pl;
@@ -278,12 +278,12 @@ int cyberiada_destroy_sm(CyberiadaSM* sm)
return CYBERIADA_NO_ERROR; return CYBERIADA_NO_ERROR;
} }
static int cyberiada_get_attr_value(char* buffer, unsigned int buffer_len, static int cyberiada_get_attr_value(char* buffer, size_t buffer_len,
xmlNode* node, const char* attrname) xmlNode* node, const char* attrname)
{ {
xmlAttr* attribute = node->properties; xmlAttr* attribute = node->properties;
while(attribute) { while(attribute) {
if (strcmp(attribute->name, attrname) == 0) { if (strcmp((const char*)attribute->name, attrname) == 0) {
xmlChar* value = xmlNodeListGetString(node->doc, attribute->children, 1); xmlChar* value = xmlNodeListGetString(node->doc, attribute->children, 1);
strncpy(buffer, (char*)value, buffer_len); strncpy(buffer, (char*)value, buffer_len);
xmlFree(value); xmlFree(value);
@@ -294,7 +294,7 @@ static int cyberiada_get_attr_value(char* buffer, unsigned int buffer_len,
return CYBERIADA_NOT_FOUND; return CYBERIADA_NOT_FOUND;
} }
static int cyberiada_get_element_text(char* buffer, unsigned int buffer_len, static int cyberiada_get_element_text(char* buffer, size_t buffer_len,
xmlNode* node) xmlNode* node)
{ {
xmlChar* value = xmlNodeListGetString(node->doc, xmlChar* value = xmlNodeListGetString(node->doc,
@@ -341,7 +341,7 @@ static GraphProcessorState handle_new_graph(xmlNode* xml_node,
{ {
CyberiadaNode* node; CyberiadaNode* node;
char buffer[MAX_STR_LEN]; char buffer[MAX_STR_LEN];
unsigned int buffer_len = sizeof(buffer) - 1; size_t buffer_len = sizeof(buffer) - 1;
/* process the top graph element only */ /* process the top graph element only */
if(cyberiada_get_attr_value(buffer, buffer_len, if(cyberiada_get_attr_value(buffer, buffer_len,
xml_node, xml_node,
@@ -366,7 +366,7 @@ static GraphProcessorState handle_new_node(xmlNode* xml_node,
{ {
CyberiadaNode* node; CyberiadaNode* node;
char buffer[MAX_STR_LEN]; char buffer[MAX_STR_LEN];
unsigned int buffer_len = sizeof(buffer) - 1; size_t buffer_len = sizeof(buffer) - 1;
if (cyberiada_get_attr_value(buffer, buffer_len, if (cyberiada_get_attr_value(buffer, buffer_len,
xml_node, xml_node,
GRAPHML_ID_ATTRIBUTE) != CYBERIADA_NO_ERROR) { GRAPHML_ID_ATTRIBUTE) != CYBERIADA_NO_ERROR) {
@@ -417,10 +417,10 @@ static GraphProcessorState handle_generic_node(xmlNode* xml_node,
CyberiadaNode** current) CyberiadaNode** current)
{ {
char buffer[MAX_STR_LEN]; char buffer[MAX_STR_LEN];
unsigned int buffer_len = sizeof(buffer) - 1; size_t buffer_len = sizeof(buffer) - 1;
if (cyberiada_get_attr_value(buffer, buffer_len, if (cyberiada_get_attr_value(buffer, buffer_len,
xml_node, xml_node,
GRAPHML_YED_NODE_CONFIG_ATTRIBUTE) == CYBERIADA_NO_ERROR & GRAPHML_YED_NODE_CONFIG_ATTRIBUTE) == CYBERIADA_NO_ERROR &&
(strcmp(buffer, GRAPHML_YED_NODE_CONFIG_START) == 0 || (strcmp(buffer, GRAPHML_YED_NODE_CONFIG_START) == 0 ||
strcmp(buffer, GRAPHML_YED_NODE_CONFIG_START2) == 0)) { strcmp(buffer, GRAPHML_YED_NODE_CONFIG_START2) == 0)) {
(*current)->type = cybNodeInitial; (*current)->type = cybNodeInitial;
@@ -440,7 +440,7 @@ static int cyberiada_xml_read_coord(xmlNode* xml_node,
double* result) double* result)
{ {
char buffer[MAX_STR_LEN]; char buffer[MAX_STR_LEN];
unsigned int buffer_len = sizeof(buffer) - 1; size_t buffer_len = sizeof(buffer) - 1;
if (cyberiada_get_attr_value(buffer, buffer_len, if (cyberiada_get_attr_value(buffer, buffer_len,
xml_node, xml_node,
attr_name) != CYBERIADA_NO_ERROR) { attr_name) != CYBERIADA_NO_ERROR) {
@@ -497,7 +497,7 @@ static GraphProcessorState handle_property(xmlNode* xml_node,
CyberiadaNode** current) CyberiadaNode** current)
{ {
char buffer[MAX_STR_LEN]; char buffer[MAX_STR_LEN];
unsigned int buffer_len = sizeof(buffer) - 1; size_t buffer_len = sizeof(buffer) - 1;
if (cyberiada_get_attr_value(buffer, buffer_len, if (cyberiada_get_attr_value(buffer, buffer_len,
xml_node, xml_node,
GRAPHML_YED_PROP_VALUE_ATTRIBUTE) != CYBERIADA_NO_ERROR) { GRAPHML_YED_PROP_VALUE_ATTRIBUTE) != CYBERIADA_NO_ERROR) {
@@ -514,7 +514,7 @@ static GraphProcessorState handle_node_title(xmlNode* xml_node,
CyberiadaNode** current) CyberiadaNode** current)
{ {
char buffer[MAX_STR_LEN]; char buffer[MAX_STR_LEN];
unsigned int buffer_len = sizeof(buffer) - 1; size_t buffer_len = sizeof(buffer) - 1;
if ((*current)->title != NULL) { if ((*current)->title != NULL) {
ERROR("Trying to set node %s label twice\n", (*current)->id); ERROR("Trying to set node %s label twice\n", (*current)->id);
return gpsInvalid; return gpsInvalid;
@@ -530,7 +530,7 @@ static GraphProcessorState handle_node_action(xmlNode* xml_node,
CyberiadaNode** current) CyberiadaNode** current)
{ {
char buffer[MAX_STR_LEN]; char buffer[MAX_STR_LEN];
unsigned int buffer_len = sizeof(buffer) - 1; size_t buffer_len = sizeof(buffer) - 1;
if ((*current)->action != NULL) { if ((*current)->action != NULL) {
ERROR("Trying to set node %s action twice\n", (*current)->id); ERROR("Trying to set node %s action twice\n", (*current)->id);
return gpsInvalid; return gpsInvalid;
@@ -548,7 +548,7 @@ static GraphProcessorState handle_new_edge(xmlNode* xml_node,
CyberiadaNode* source = NULL; CyberiadaNode* source = NULL;
CyberiadaNode* target = NULL; CyberiadaNode* target = NULL;
char buffer[MAX_STR_LEN]; char buffer[MAX_STR_LEN];
unsigned int buffer_len = sizeof(buffer) - 1; size_t buffer_len = sizeof(buffer) - 1;
if(cyberiada_get_attr_value(buffer, buffer_len, if(cyberiada_get_attr_value(buffer, buffer_len,
xml_node, xml_node,
GRAPHML_SOURCE_ATTRIBUTE) != CYBERIADA_NO_ERROR) { GRAPHML_SOURCE_ATTRIBUTE) != CYBERIADA_NO_ERROR) {
@@ -642,7 +642,7 @@ static GraphProcessorState handle_edge_label(xmlNode* xml_node,
CyberiadaNode** node) CyberiadaNode** node)
{ {
char buffer[MAX_STR_LEN]; char buffer[MAX_STR_LEN];
unsigned int buffer_len = sizeof(buffer) - 1; size_t buffer_len = sizeof(buffer) - 1;
CyberiadaEdge *current; CyberiadaEdge *current;
current = cyberiada_graph_find_last_edge(sm); current = cyberiada_graph_find_last_edge(sm);
if (current == NULL) { if (current == NULL) {
@@ -690,17 +690,17 @@ static ProcessorTransition processor_state_table[] = {
{gpsEdgePath, GRAPHML_YED_EDGELABEL, &handle_edge_label}, {gpsEdgePath, GRAPHML_YED_EDGELABEL, &handle_edge_label},
{gpsEdgePath, GRAPHML_EDGE_ELEMENT, &handle_new_edge}, {gpsEdgePath, GRAPHML_EDGE_ELEMENT, &handle_new_edge},
}; };
const unsigned int processor_state_table_size = sizeof(processor_state_table) / sizeof(ProcessorTransition); const size_t processor_state_table_size = sizeof(processor_state_table) / sizeof(ProcessorTransition);
static int dispatch_processor(xmlNode* xml_node, static int dispatch_processor(xmlNode* xml_node,
CyberiadaSM* sm, CyberiadaSM* sm,
CyberiadaNode** current, CyberiadaNode** current,
GraphProcessorState* gps) { GraphProcessorState* gps) {
unsigned int i; size_t i;
if (xml_node->type == XML_ELEMENT_NODE) { if (xml_node->type == XML_ELEMENT_NODE) {
for (i = 0; i < processor_state_table_size; i++) { for (i = 0; i < processor_state_table_size; i++) {
if (processor_state_table[i].state == *gps && if (processor_state_table[i].state == *gps &&
strcmp(xml_node->name, processor_state_table[i].symbol) == 0) { strcmp((const char*)xml_node->name, processor_state_table[i].symbol) == 0) {
*gps = (*(processor_state_table[i].handler))(xml_node, sm, current); *gps = (*(processor_state_table[i].handler))(xml_node, sm, current);
return CYBERIADA_NO_ERROR; return CYBERIADA_NO_ERROR;
} }
@@ -738,7 +738,7 @@ static int cyberiada_build_graph(xmlNode* xml_root,
static int cyberiada_decode_yed_xml(xmlNode* root, CyberiadaSM* sm) static int cyberiada_decode_yed_xml(xmlNode* root, CyberiadaSM* sm)
{ {
char buffer[MAX_STR_LEN]; char buffer[MAX_STR_LEN];
unsigned int buffer_len = sizeof(buffer) - 1; size_t buffer_len = sizeof(buffer) - 1;
GraphProcessorState gps = gpsInit; GraphProcessorState gps = gpsInit;
CyberiadaNode* current = NULL; CyberiadaNode* current = NULL;
int res; int res;
@@ -775,7 +775,7 @@ static int cyberiada_check_graphml_ns(xmlNode* root)
return CYBERIADA_XML_ERROR; return CYBERIADA_XML_ERROR;
} }
do { do {
if (strcmp(ns->href, GRAPHML_NAMESPACE_URI) == 0) { if (strcmp((const char*)ns->href, GRAPHML_NAMESPACE_URI) == 0) {
return CYBERIADA_NO_ERROR; return CYBERIADA_NO_ERROR;
} }
ns = ns->next; ns = ns->next;
@@ -789,8 +789,6 @@ int cyberiada_read_sm(CyberiadaSM* sm, const char* filename, CyberiadaXMLFormat
int res; int res;
xmlDoc* doc = NULL; xmlDoc* doc = NULL;
xmlNode* root = NULL; xmlNode* root = NULL;
char buffer[MAX_STR_LEN];
unsigned int buffer_len;
cyberiada_init_sm(sm); cyberiada_init_sm(sm);
@@ -803,7 +801,7 @@ int cyberiada_read_sm(CyberiadaSM* sm, const char* filename, CyberiadaXMLFormat
/* get the root element node */ /* get the root element node */
root = xmlDocGetRootElement(doc); root = xmlDocGetRootElement(doc);
if (strcmp(root->name, GRAPHML_GRAPHML_ELEMENT) != 0) { if (strcmp((const char*)root->name, GRAPHML_GRAPHML_ELEMENT) != 0) {
ERROR("error: could not find GraphML root node %s\n", filename); ERROR("error: could not find GraphML root node %s\n", filename);
return CYBERIADA_XML_ERROR; return CYBERIADA_XML_ERROR;
} }
@@ -834,8 +832,6 @@ static int cyberiada_print_node(CyberiadaNode* node, CyberiadaNode* start, int l
{ {
CyberiadaNode* cur_node; CyberiadaNode* cur_node;
char levelspace[16]; char levelspace[16];
char buffer[MAX_STR_LEN];
unsigned int buffer_len = sizeof(buffer) - 1;
int i; int i;
memset(levelspace, 0, sizeof(levelspace)); memset(levelspace, 0, sizeof(levelspace));
@@ -872,10 +868,7 @@ static int cyberiada_print_node(CyberiadaNode* node, CyberiadaNode* start, int l
static int cyberiada_print_edge(CyberiadaEdge* edge) static int cyberiada_print_edge(CyberiadaEdge* edge)
{ {
char buffer[MAX_STR_LEN];
unsigned int buffer_len = sizeof(buffer) - 1;
CyberiadaPolyline* polyline; CyberiadaPolyline* polyline;
int i;
printf(" Edge %s [%s %s]->[%s %s]\n", printf(" Edge %s [%s %s]->[%s %s]\n",
edge->id, edge->id,
edge->source->id, edge->source->id,
@@ -889,7 +882,6 @@ static int cyberiada_print_edge(CyberiadaEdge* edge)
edge->geometry_target_point.x, edge->geometry_target_point.x,
edge->geometry_target_point.y); edge->geometry_target_point.y);
} else { } else {
int i;
printf(" Geometry: (\n"); printf(" Geometry: (\n");
printf(" (%lf, %lf)\n", edge->geometry_source_point.x, edge->geometry_source_point.y); printf(" (%lf, %lf)\n", edge->geometry_source_point.x, edge->geometry_source_point.y);
for (polyline = edge->geometry_polyline; polyline; polyline = polyline->next) { for (polyline = edge->geometry_polyline; polyline; polyline = polyline->next) {
@@ -908,8 +900,6 @@ static int cyberiada_print_edge(CyberiadaEdge* edge)
int cyberiada_print_sm(CyberiadaSM* sm) int cyberiada_print_sm(CyberiadaSM* sm)
{ {
char buffer[MAX_STR_LEN];
unsigned int buffer_len = sizeof(buffer) - 1;
CyberiadaNode* cur_node; CyberiadaNode* cur_node;
CyberiadaEdge* cur_edge; CyberiadaEdge* cur_edge;

View File

@@ -32,109 +32,109 @@ extern "C" {
* The Cyberiada GraphML library types * The Cyberiada GraphML library types
* ----------------------------------------------------------------------------- */ * ----------------------------------------------------------------------------- */
/* SM node types: */ /* SM node types: */
typedef enum { typedef enum {
cybNodeInitial = 0, /* initial node */ cybNodeInitial = 0, /* initial node */
cybNodeSimple, /* simple node */ cybNodeSimple, /* simple node */
cybNodeComplex, /* complex node */ cybNodeComplex, /* complex node */
cybNodeComment /* comment node */ cybNodeComment /* comment node */
} CyberiadaNodeType; } CyberiadaNodeType;
/* SM node geometry */ /* SM node geometry */
typedef struct { typedef struct {
double x, y; double x, y;
} CyberiadaPoint; } CyberiadaPoint;
typedef struct { typedef struct {
double x, y, width, height; double x, y, width, height;
} CyberiadaRect; } CyberiadaRect;
typedef struct _CyberiadaPolyline { typedef struct _CyberiadaPolyline {
CyberiadaPoint point; CyberiadaPoint point;
struct _CyberiadaPolyline* next; struct _CyberiadaPolyline* next;
} CyberiadaPolyline; } CyberiadaPolyline;
/* SM node (state) */ /* SM node (state) */
typedef struct _CyberiadaNode { typedef struct _CyberiadaNode {
char* id; char* id;
unsigned int id_len; size_t id_len;
char* title; char* title;
unsigned int title_len; size_t title_len;
CyberiadaNodeType type; CyberiadaNodeType type;
char* action; char* action;
unsigned int action_len; size_t action_len;
CyberiadaRect geometry_rect; CyberiadaRect geometry_rect;
struct _CyberiadaNode* next; struct _CyberiadaNode* next;
struct _CyberiadaNode* parent; struct _CyberiadaNode* parent;
struct _CyberiadaNode* children; struct _CyberiadaNode* children;
} CyberiadaNode; } CyberiadaNode;
/* SM edge (transition) */ /* SM edge (transition) */
typedef struct _CyberiadaEdge { typedef struct _CyberiadaEdge {
char* id; char* id;
unsigned int id_len; size_t id_len;
CyberiadaNode* source; CyberiadaNode* source;
CyberiadaNode* target; CyberiadaNode* target;
char* action; char* action;
unsigned int action_len; size_t action_len;
CyberiadaPoint geometry_source_point; CyberiadaPoint geometry_source_point;
CyberiadaPoint geometry_target_point; CyberiadaPoint geometry_target_point;
CyberiadaPolyline* geometry_polyline; CyberiadaPolyline* geometry_polyline;
struct _CyberiadaEdge* next; struct _CyberiadaEdge* next;
} CyberiadaEdge; } CyberiadaEdge;
/* SM graph (state machine) */ /* SM graph (state machine) */
typedef struct { typedef struct {
char* name; char* name;
unsigned int name_len; size_t name_len;
char* version; char* version;
unsigned int version_len; size_t version_len;
CyberiadaNode* nodes; CyberiadaNode* nodes;
CyberiadaNode* start; CyberiadaNode* start;
CyberiadaEdge* edges; CyberiadaEdge* edges;
} CyberiadaSM; } CyberiadaSM;
/* SM GraphML supported formats */ /* SM GraphML supported formats */
typedef enum { typedef enum {
cybxmlYED = 0, cybxmlYED = 0,
cybxmlCyberiada cybxmlCyberiada
} CyberiadaXMLFormat; } CyberiadaXMLFormat;
/* ----------------------------------------------------------------------------- /* -----------------------------------------------------------------------------
* The Cyberiada GraphML error codes * The Cyberiada GraphML error codes
* ----------------------------------------------------------------------------- */ * ----------------------------------------------------------------------------- */
#define CYBERIADA_NO_ERROR 0 #define CYBERIADA_NO_ERROR 0
#define CYBERIADA_XML_ERROR 1 #define CYBERIADA_XML_ERROR 1
#define CYBERIADA_FORMAT_ERROR 2 #define CYBERIADA_FORMAT_ERROR 2
#define CYBERIADA_NOT_FOUND 3 #define CYBERIADA_NOT_FOUND 3
#define CYBERIADA_BAD_PARAMETER 4 #define CYBERIADA_BAD_PARAMETER 4
/* ----------------------------------------------------------------------------- /* -----------------------------------------------------------------------------
* The Cyberiada GraphML library functions * The Cyberiada GraphML library functions
* ----------------------------------------------------------------------------- */ * ----------------------------------------------------------------------------- */
/* Allocate the SM structure in memory (for heap usage) */ /* Allocate the SM structure in memory (for heap usage) */
CyberiadaSM* cyberiada_create_sm(); CyberiadaSM* cyberiada_create_sm(void);
/* Initialize the SM structure. Do not use the structure before the initialization! */ /* Initialize the SM structure. Do not use the structure before the initialization! */
int cyberiada_init_sm(CyberiadaSM* sm); int cyberiada_init_sm(CyberiadaSM* sm);
/* Cleanup the content of the SM structure, free the conents memory */ /* Cleanup the content of the SM structure, free the conents memory */
int cyberiada_cleanup_sm(CyberiadaSM* sm); int cyberiada_cleanup_sm(CyberiadaSM* sm);
/* Free the allocated SM structure (for heap usage) */ /* Free the allocated SM structure (for heap usage) */
int cyberiada_destroy_sm(CyberiadaSM* sm); int cyberiada_destroy_sm(CyberiadaSM* sm);
/* Read an XML file and decode the SM structure */ /* Read an XML file and decode the SM structure */
int cyberiada_read_sm(CyberiadaSM* sm, const char* filename, CyberiadaXMLFormat format); int cyberiada_read_sm(CyberiadaSM* sm, const char* filename, CyberiadaXMLFormat format);
/* Print the SM structure to stdout */ /* Print the SM structure to stdout */
int cyberiada_print_sm(CyberiadaSM* sm); int cyberiada_print_sm(CyberiadaSM* sm);
#ifdef __cplusplus #ifdef __cplusplus
} }
#endif #endif
#endif #endif

2
test.c
View File

@@ -36,7 +36,7 @@ const char* format_names[] = {
unsigned int format_count = sizeof(formats) / sizeof(char*); unsigned int format_count = sizeof(formats) / sizeof(char*);
void print_usage(const char* name) static void print_usage(const char* name)
{ {
unsigned int i; unsigned int i;
fprintf(stderr, "%s -t <format> <path-to-graphml-file>\n\n", name); fprintf(stderr, "%s -t <format> <path-to-graphml-file>\n\n", name);