Skip to content

Commit

Permalink
feat: 0.1.9 add kls_usageReport() (#10)
Browse files Browse the repository at this point in the history
* feat: add kls_usageReport()

* feat: bump amboso to 1.6.3

* feat: 0.1.9 kls_usageReport()

Fixes wrong printf in kls_showList().
  • Loading branch information
jgabaut committed Aug 25, 2023
1 parent 6d08443 commit 6728597
Show file tree
Hide file tree
Showing 9 changed files with 106 additions and 48 deletions.
2 changes: 1 addition & 1 deletion amboso
1 change: 1 addition & 0 deletions bin/stego.lock
Original file line number Diff line number Diff line change
Expand Up @@ -13,3 +13,4 @@ tests# tests folder name
0.1.6# functional Koliseo_Temp
0.1.7# add Region_List
0.1.8# improved Region API
0.1.9# add kls_usageReport()
4 changes: 4 additions & 0 deletions bin/v0.1.9/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
#amboso compliant version folder, will ignore everything inside BUT the gitignore, to keep the clean dir
*
!.gitignore
!static
1 change: 1 addition & 0 deletions bin/v0.1.9/static
4 changes: 2 additions & 2 deletions configure.ac
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
# Define the package name and version
AC_INIT([koliseo], [0.1.8], [jgabaut@github.com])
AC_INIT([koliseo], [0.1.9], [jgabaut@github.com])

# Verify automake version and enable foreign option
AM_INIT_AUTOMAKE([foreign -Wall])
Expand All @@ -24,7 +24,7 @@ fi
# Set a default version number if not specified externally
AC_ARG_VAR([VERSION], [Version number])
if test -z "$VERSION"; then
VERSION="0.1.8"
VERSION="0.1.9"
fi

# Output variables to the config.h header
Expand Down
2 changes: 1 addition & 1 deletion docs/koliseo.doxyfile
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ PROJECT_NAME = "koliseo"
# could be handy for archiving the generated documentation or if some version
# control system is used.

PROJECT_NUMBER = "0.1.8"
PROJECT_NUMBER = "0.1.9"

# Using the PROJECT_BRIEF tag one can provide an optional one line description
# for a project that appears at the top of each page and should give viewer a
Expand Down
107 changes: 72 additions & 35 deletions src/koliseo.c
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
#include "koliseo.h"
//Default settings for global vars.
int KOLISEO_DEBUG = 0;
int KOLISEO_AUTOSET_REGIONS = 1;
FILE* KOLISEO_DEBUG_FP = NULL;

/**
Expand Down Expand Up @@ -62,19 +64,21 @@ Koliseo* kls_new(ptrdiff_t size) {
kls->size = size;
kls->offset = sizeof(*kls);
kls->prev_offset = kls->offset;
sprintf(msg,"Init of Region_List for kls.");
kls_log("KLS",msg);
Region* kls_header = (Region*) malloc(sizeof(Region));
kls_header->begin_offset = 0;
kls_header->end_offset = kls->offset;
strcpy(kls_header->name,"KLS Header");
strcpy(kls_header->desc,"Denotes Space occupied by the Koliseo header.");
Region_List reglist = kls_emptyList();
reglist = kls_cons(kls_header,reglist);
kls->regs = reglist;
if (kls->regs == NULL) {
fprintf(stderr,"[KLS] kls_new() failed to get a Region_List.\n");
abort();
if (KOLISEO_AUTOSET_REGIONS == 1) {
sprintf(msg,"Init of Region_List for kls.");
kls_log("KLS",msg);
Region* kls_header = (Region*) malloc(sizeof(Region));
kls_header->begin_offset = 0;
kls_header->end_offset = kls->offset;
strcpy(kls_header->name,"KLS Header");
strcpy(kls_header->desc,"Denotes Space occupied by the Koliseo header.");
Region_List reglist = kls_emptyList();
reglist = kls_cons(kls_header,reglist);
kls->regs = reglist;
if (kls->regs == NULL) {
fprintf(stderr,"[KLS] kls_new() failed to get a Region_List.\n");
abort();
}
}
} else {
fprintf(stderr,"[KLS] Failed kls_new() call.\n");
Expand Down Expand Up @@ -172,14 +176,16 @@ void* kls_push_zero(Koliseo* kls, ptrdiff_t size, ptrdiff_t align, ptrdiff_t cou
memset(p, 0, size*count);
kls->prev_offset = kls->offset;
kls->offset += padding + size*count;
Region* reg = (Region*) malloc(sizeof(Region));
reg->begin_offset = kls->prev_offset;
reg->end_offset = kls->offset;
strcpy(reg->name, KOLISEO_DEFAULT_REGION_NAME);
strcpy(reg->desc,KOLISEO_DEFAULT_REGION_DESC);
Region_List reglist = kls_emptyList();
reglist = kls_cons(reg,reglist);
kls->regs = kls_append(reglist, kls->regs);
if (KOLISEO_AUTOSET_REGIONS == 1) {
Region* reg = (Region*) malloc(sizeof(Region));
reg->begin_offset = kls->prev_offset;
reg->end_offset = kls->offset;
strcpy(reg->name, KOLISEO_DEFAULT_REGION_NAME);
strcpy(reg->desc,KOLISEO_DEFAULT_REGION_DESC);
Region_List reglist = kls_emptyList();
reglist = kls_cons(reg,reglist);
kls->regs = kls_append(reglist, kls->regs);
}

char msg[500];
sprintf(msg,"Pushed zeroes, size (%li) for KLS.",size);
Expand Down Expand Up @@ -389,30 +395,25 @@ void kls_showList_toFile(Region_List l, FILE* fp) {
abort();
}
char msg[1000];
printf("[");
fprintf(fp,"[");
while (!kls_empty(l))
{
fprintf(fp,"--BEGIN Region--\n\n");
fprintf(fp,"Begin [%li] End [%li]\n",kls_head(l)->begin_offset,kls_head(l)->end_offset);
fprintf(fp,"Name [%s] Desc [%s]",kls_head(l)->name,kls_head(l)->desc);
fprintf(fp,"\n\n--END Region--");
fprintf(fp,"\n[%s], [%s] ",kls_head(l)->name,kls_head(l)->desc);
fprintf(fp,"[%li]->[%li]",kls_head(l)->begin_offset,kls_head(l)->end_offset);
kls_log("KLS","--BEGIN Region--");
sprintf(msg,"Begin [%li] End [%li]",kls_head(l)->begin_offset,kls_head(l)->end_offset);
sprintf(msg,"[%s], [%s]",kls_head(l)->name,kls_head(l)->desc);
kls_log("KLS",msg);
sprintf(msg,"Name [%s] Desc [%s]",kls_head(l)->name,kls_head(l)->desc);
sprintf(msg,"[%li]->[%li]",kls_head(l)->begin_offset,kls_head(l)->end_offset);
kls_log("KLS",msg);
kls_log("KLS","--END Region--");
kls_log("KLS",msg);
//TODO
//Print containing kls
//print_kls_2file(stdout,kls_head(l));

l = kls_tail(l);
if (!kls_empty(l))
{
fprintf(fp,",\n");
}
}
fprintf(fp,"]\n");
fprintf(fp,"\n]\n");
}

void kls_showList(Region_List l) {
Expand All @@ -436,14 +437,14 @@ bool kls_member(element el, Region_List l) {
}
}
}
int kls_lenght(Region_List l) {
int kls_length(Region_List l) {
if (kls_empty(l))
{
return 0;
}
else
{
return 1 + kls_lenght(kls_tail(l));
return 1 + kls_length(kls_tail(l));
}
}
Region_List kls_append(Region_List l1, Region_List l2) {
Expand Down Expand Up @@ -614,3 +615,39 @@ bool kls_isLess(Region* r1, Region* r2) {
bool kls_isEqual(Region* r1, Region* r2) {
return (r1->begin_offset == r2->begin_offset);
}

double kls_usageShare(Region* r, Koliseo* kls) {
if (r == NULL) {
kls_log("ERROR","kls_usageShare(): passed Region was NULL");
return -1;
}
if (kls == NULL) {
kls_log("ERROR","kls_usageShare(): passed Koliseo was NULL");
return -1;
}
ptrdiff_t r_size = r->end_offset - r->begin_offset;
double res = (r_size * 100.0) / kls->size;
return res;
}

void kls_usageReport_toFile(Koliseo* kls, FILE* fp) {
if (fp == NULL) {
kls_log("ERROR","kls_usageReport_toFile(): passed file was NULL");
return;
}
if (kls == NULL) {
kls_log("ERROR","kls_usageReport_toFile(): passed Koliseo was NULL");
return;
}
Region_List rl = kls_copy(kls->regs);
int i = 0;
while(!kls_empty(rl)) {
fprintf(fp,"Usage for region (%i) [%s]: [%.3f%%]\n", i, rl->value->name, kls_usageShare(rl->value,kls));
rl = kls_tail(rl);
i++;
}
}

void kls_usageReport(Koliseo* kls) {
kls_usageReport_toFile(kls,stdout);
}
20 changes: 14 additions & 6 deletions src/koliseo.h
Original file line number Diff line number Diff line change
Expand Up @@ -10,19 +10,23 @@

#define KLS_MAJOR 0 /**< Represents current major release.*/
#define KLS_MINOR 1 /**< Represents current minor release.*/
#define KLS_PATCH 8 /**< Represents current patch release.*/
#define KLS_PATCH 9 /**< Represents current patch release.*/

/**
* Global variable for debug flag.
*/
extern int KOLISEO_DEBUG;
/**
* Global variable for auto-setting of Regions flag.
*/
extern int KOLISEO_AUTOSET_REGIONS;

/**
* Global variable for debug file pointer.
*/
extern FILE* KOLISEO_DEBUG_FP;

static const char KOLISEO_API_VERSION_STRING[] = "0.1.8"; /**< Represents current version with MAJOR.MINOR.PATCH format.*/
static const char KOLISEO_API_VERSION_STRING[] = "0.1.9"; /**< Represents current version with MAJOR.MINOR.PATCH format.*/

const char* string_koliseo_version(void);

Expand Down Expand Up @@ -120,7 +124,6 @@ void kls_temp_end(Koliseo_Temp tmp_kls);
#define KLS_PUSH_T_NAMED(kls_temp, type, count, name, desc) (type*)KLS_PUSH_NAMED(kls_temp.kls, type, count, name, desc)
#define KLS_POP_T(kls_temp, type, count) (type*)KLS_POP(kls_temp.kls, type, count)


Region_List kls_emptyList(void);
#define KLS_GETLIST() kls_emptyList()
bool kls_empty(Region_List);
Expand All @@ -135,21 +138,26 @@ void kls_showList_toFile(Region_List, FILE* fp);
#define KLS_ECHOLIST(kls_list) kls_showList(kls_list)
#define KLS_PRINTLIST(kls_list,file) kls_showList_toFile(kls_list,file)
bool kls_member(element, Region_List);
int kls_lenght(Region_List);
int kls_length(Region_List);
Region_List kls_append(Region_List, Region_List);
Region_List kls_reverse(Region_List);
Region_List kls_copy(Region_List);
Region_List kls_delet(element, Region_List);

Region_List kls_insord(element, Region_List);
#define KLS_PUSHLIST(kls,kls_list) kls_insord(kls,kls_list)
#define KLS_PUSHLIST(reg,kls_list) kls_insord(reg,kls_list)
Region_List kls_insord_p(element, Region_List);
#define KLS_PUSHLIST_P(kls,kls_list) kls_insord_p(kls,kls_list)
#define KLS_PUSHLIST_P(reg,kls_list) kls_insord_p(reg,kls_list)
Region_List kls_mergeList(Region_List, Region_List);
Region_List kls_intersect(Region_List, Region_List);
Region_List kls_diff(Region_List, Region_List);

#define KLS_DIFF(kls_list1,kls_list2) kls_diff(kls_list1,kls_list2)
bool kls_isLess(element, element);
bool kls_isEqual(element, element);
double kls_usageShare(element, Koliseo*);
void kls_usageReport_toFile(Koliseo*,FILE*);
void kls_usageReport(Koliseo*);

#endif

Expand Down
13 changes: 10 additions & 3 deletions static/demo.c
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,11 @@

int main(void) {
KOLISEO_DEBUG = 1;
KOLISEO_AUTOSET_REGIONS = 1;
printf("Demo for Koliseo, using API version %s\n", string_koliseo_version());
printf("Supporting Amboso API version %s\n\n", getAmbosoVersion());
printf("KOLISEO_DEBUG is [%i]\n\n", KOLISEO_DEBUG);
printf("KOLISEO_AUTOSET_REGIONS is [%i]\n\n", KOLISEO_AUTOSET_REGIONS);
//Reset debug log file
if (KOLISEO_DEBUG == 1) {
KOLISEO_DEBUG_FP = fopen("./static/debug_log.txt","w");
Expand Down Expand Up @@ -34,9 +36,9 @@ int main(void) {

print_dbg_kls(kls);

printf("[Show Region list for Koliseo] [pos: %li]\n",kls_get_pos(kls));
printf("[Show reversed Region list for Koliseo] [pos: %li]\n",kls_get_pos(kls));

KLS_ECHOLIST(kls->regs);
KLS_ECHOLIST(kls_reverse(kls->regs));

Koliseo_Temp temp_kls = kls_temp_start(kls);
printf("[Started Koliseo_Temp] [pos: %li]\n",kls_get_pos(temp_kls.kls));
Expand Down Expand Up @@ -65,10 +67,14 @@ int main(void) {
printf("\n*p2 is [%i] after KLS_PUSH\n",*p2);
*p2 = 3;
printf("\n*p3 is [%i] after KLS_PUSH\n",*p3);

printf("[Show reversed Region list for Koliseo] [pos: %li]\n",kls_get_pos(kls));

KLS_ECHOLIST(kls_reverse(kls->regs));
printf("[%i] List size\n",kls_length(kls->regs));

printf("[Usage report for Koliseo]\n");
kls_usageReport(kls);

int* z = &minusone;
printf("\n*z is [%i] before KLS_POP\n",*z);
Expand All @@ -95,6 +101,7 @@ int main(void) {
kls_free(kls);

printf("[End of demo]\n");
printf("[End of demo for Koliseo v%s]\n", string_koliseo_version());
if (KOLISEO_DEBUG == 1) {
fclose(KOLISEO_DEBUG_FP);
}
Expand Down

0 comments on commit 6728597

Please sign in to comment.