#include <stdint.h> //uint64_t
#include <string.h> //memmove
#include <stdlib.h> //malloc
-#include "ir.h"
+#include <apc/ir.h>
#define CURR_CDAT (*cdat_stackp)
#define CURR_SET set_list[CURR_CDAT->num_sets]
#define PREV_VDAT (vdat_buf[num_vdats-1])
#define CURR_MODEL model_list[CURR_VDAT->num_models]
#define CURR_LINK (link_buf[num_links])
+#define CURR_POST (post_buf[num_posts])
+int num_cdats = 0;
+int curr_max_cdats = PTRS_IN_PAGE;
+
+int num_odats = 0;
+int curr_max_odats = PTRS_IN_PAGE;
+
+
+int num_vdats = 0;
+int curr_max_vdats = PTRS_IN_PAGE;
+
+int num_refs = 0;
+int curr_max_refs = PTRS_IN_PAGE;
+uint64_t ss_ref_id = 0x00FFFFFF; /* system space for ref_ids */
+
+int num_links = 0;
+int curr_max_links = PTRS_IN_PAGE;
+
+int num_posts = 0;
+int curr_max_posts = PTRS_IN_PAGE;
void
ir_init()
/* Init first link */
if( (CURR_LINK = (struct link*) malloc(sizeof(struct link))) == NULL)
perror("malloc first link failed");
+
+ /* Init first post */
+ if( (CURR_POST = (struct ref*) malloc(sizeof(struct ref))) == NULL)
+ perror("malloc first post failed");
}
//TODO: FREE MEMORY!
cdat_stackp--;
}
+void
+inc_posts()
+{
+ num_posts++;
+ if(num_posts >= curr_max_posts)
+ {
+ if( (realloc((void*) post_buf, PTRS_IN_PAGE * 4)) == NULL)
+ perror("realloc post_buf failed");
+ curr_max_posts += PTRS_IN_PAGE;
+ }
+ if( (CURR_POST = (struct ref*) malloc(sizeof (struct ref))) == NULL)
+ {
+ perror("malloc post failed");
+ }
+
+}
void
inc_odat()
{
if(num_refs % 16 == 0)
{
- posts[num_posts++] = *CURR_REF;
+ CURR_POST = CURR_REF;
+ inc_posts();
}
num_refs++;
}
void
-insert_framesheets(char direction, char* name, uint64_t ref_id, int height , int width, int num_frames)
+insert_framesheet(char direction, char* name, uint64_t ref_id, int height , int width, int num_frames)
{
CURR_VDAT->CURR_MODEL.spritesheet[(int)direction].height = height;
CURR_VDAT->CURR_MODEL.spritesheet[(int)direction].width = width;