diff --git a/hmml_to_html/hmml_to_html.c b/hmml_to_html/hmml_to_html.c
index 4010734..b5edc2d 100644
--- a/hmml_to_html/hmml_to_html.c
+++ b/hmml_to_html/hmml_to_html.c
@@ -158,7 +158,6 @@ CopyStringToBuffer(buffer *Dest, char *Format, ...)
{
printf("Too big! Too big!\n");
__asm__("int3");
-
}
}
va_list Args;
@@ -171,7 +170,6 @@ CopyStringToBuffer(buffer *Dest, char *Format, ...)
{
printf("Too big! Too big!\n");
__asm__("int3");
-
}
}
Dest->Ptr += Length;
@@ -549,6 +547,7 @@ GenerateTopicColours(buffer *Colour, char *Topic)
int TopicsLength = ftell(TopicsFile);
fseek(TopicsFile, 0, SEEK_SET);
+ // TODO(matt): May this not just ClaimBuffer?
if(!(TopicsBuffer = malloc(TopicsLength)))
{
perror("GenerateTopicColours");
@@ -880,6 +879,26 @@ main(int ArgC, char **Args)
buffer Config;
#endif
+ // NOTE(matt): Tree structure of buffer dependencies
+ // Master
+ // Title
+ // QuoteMenu
+ // ReferenceMenu
+ // FilterMenu
+ // FilterTopics
+ // FilterMedia
+ // Player
+ // Colour
+ // Annotation
+ // AnnotationHeader
+ // AnnotationClass
+ // AnnotationData
+ // Text
+ // Category
+ // FilterState
+
+ buffer Master;
+
buffer Title;
buffer QuoteMenu;
buffer ReferenceMenu;
@@ -888,23 +907,18 @@ main(int ArgC, char **Args)
buffer FilterMedia;
buffer Player;
+ buffer Colour;
buffer Annotation;
buffer AnnotationHeader;
buffer AnnotationClass;
buffer AnnotationData;
buffer Text;
buffer Category;
- buffer Colour;
buffer FilterState;
- buffer Master;
-
for(int FileIndex = 1; FileIndex < ArgC; ++FileIndex)
{
- // TODO(matt): Maybe look into this further. It works, but there may be
- // bugs lurking
- ClaimedMemory = 0;
FILE *InFile;
if(!(InFile = fopen(Args[FileIndex], "r")))
{
@@ -922,16 +936,33 @@ main(int ArgC, char **Args)
if(HMML.well_formed)
{
+ // NOTE(matt): Tree structure of "global" buffer dependencies
+ // Master
+ // Title
+ // QuoteMenu
+ // ReferenceMenu
+ // FilterMenu
+ // FilterTopics
+ // FilterMedia
+ // Player
+ // Colour
+ // Annotation
+ // FilterState
+
ClaimBuffer(MemoryArena, &ClaimedMemory, &Master, "Master", 1024 * 512);
- ClaimBuffer(MemoryArena, &ClaimedMemory, &Player, "Player", 1024 * 256);
ClaimBuffer(MemoryArena, &ClaimedMemory, &Title, "Title", 1024 * 16);
+ ClaimBuffer(MemoryArena, &ClaimedMemory, &QuoteMenu, "QuoteMenu", 1024 * 16);
+ ClaimBuffer(MemoryArena, &ClaimedMemory, &ReferenceMenu, "ReferenceMenu", 1024 * 16);
ClaimBuffer(MemoryArena, &ClaimedMemory, &FilterMenu, "FilterMenu", 1024 * 16);
ClaimBuffer(MemoryArena, &ClaimedMemory, &FilterTopics, "FilterTopics", 1024 * 8);
ClaimBuffer(MemoryArena, &ClaimedMemory, &FilterMedia, "FilterMedia", 1024 * 8);
+
+ ClaimBuffer(MemoryArena, &ClaimedMemory, &Player, "Player", 1024 * 256);
+ ClaimBuffer(MemoryArena, &ClaimedMemory, &Colour, "Colour", 32);
+ ClaimBuffer(MemoryArena, &ClaimedMemory, &Annotation, "Annotation", 1024 * 8);
+
ClaimBuffer(MemoryArena, &ClaimedMemory, &FilterState, "FilterState", 1024 * 4);
- ClaimBuffer(MemoryArena, &ClaimedMemory, &ReferenceMenu, "ReferenceMenu", 1024 * 16);
- ClaimBuffer(MemoryArena, &ClaimedMemory, &QuoteMenu, "QuoteMenu", 1024 * 16);
ref_info ReferencesArray[200] = { 0 };
category_info CategoriesArray[64] = { 0 };
@@ -954,6 +985,10 @@ main(int ArgC, char **Args)
"
\n"
" \n", HMML.metadata.id, HMML.metadata.project);
+#if DEBUG
+ printf(" --- Entering Annotations Loop ---\n");
+#endif
+
for(int AnnotationIndex = 0; AnnotationIndex < HMML.annotation_count; ++AnnotationIndex)
{
#if DEBUG
@@ -966,10 +1001,18 @@ main(int ArgC, char **Args)
quote_info QuoteInfo = { 0 };
+ // NOTE(matt): Tree structure of "annotation local" buffer dependencies
+ // AnnotationHeader
+ // AnnotationClass
+ // AnnotationData
+ // Text
+ // Category
+
ClaimBuffer(MemoryArena, &ClaimedMemory, &AnnotationHeader, "AnnotationHeader", 512);
ClaimBuffer(MemoryArena, &ClaimedMemory, &AnnotationClass, "AnnotationClass", 256);
+ ClaimBuffer(MemoryArena, &ClaimedMemory, &AnnotationData, "AnnotationData", 128);
ClaimBuffer(MemoryArena, &ClaimedMemory, &Text, "Text", 1024 * 4);
- ClaimBuffer(MemoryArena, &ClaimedMemory, &Colour, "Colour", 32);
+ ClaimBuffer(MemoryArena, &ClaimedMemory, &Category, "Category", 256);
CopyStringToBuffer(&AnnotationHeader,
"
markers[MarkerIndex].marker);
- if(!HasCategory)
- {
- ClaimBuffer(MemoryArena, &ClaimedMemory, &Category, "Category", 256);
- }
BuildCategories(&AnnotationClass, &Category, &MarkerIndex, &HasCategory, Anno->markers[MarkerIndex].marker);
}
}
@@ -1114,7 +1153,6 @@ Readable);
AppendedIdentifier:
if(!HasReference)
{
- ClaimBuffer(MemoryArena, &ClaimedMemory, &AnnotationData, "AnnotationData", 128);
if(CurrentRef->isbn)
{
CopyStringToBuffer(&AnnotationData, " data-ref=\"%s", CurrentRef->isbn);
@@ -1179,7 +1217,6 @@ AppendedIdentifier:
if(!HasReference)
{
- ClaimBuffer(MemoryArena, &ClaimedMemory, &AnnotationData, "AnnotationData", 128);
CopyStringToBuffer(&AnnotationData, " data-ref=\"%d;", QuoteIdentifier);
}
else
@@ -1241,10 +1278,6 @@ Anno->time);
{
BuildFilter(CategoriesArray, &UniqueCategories, Anno->markers[MarkerIndex].marker);
}
- if(!HasCategory)
- {
- ClaimBuffer(MemoryArena, &ClaimedMemory, &Category, "Category", 256);
- }
BuildCategories(&AnnotationClass, &Category, &MarkerIndex, &HasCategory, Anno->markers[MarkerIndex].marker);
}
@@ -1255,12 +1288,9 @@ Anno->time);
{
CopyStringToBuffer(&AnnotationData, "\"");
CopyBuffer(&AnnotationHeader, &AnnotationData);
- DeclaimBuffer(&AnnotationData, &ClaimedMemory);
}
CopyStringToBuffer(&AnnotationHeader, ">\n");
- ClaimBuffer(MemoryArena, &ClaimedMemory, &Annotation, "Annotation", 1024 * 8);
-
CopyBuffer(&Annotation, &AnnotationHeader);
CopyStringToBuffer(&Annotation,
"
%s",
@@ -1270,7 +1300,6 @@ Anno->time);
// TODO(matt): Handle special-cases, i.e. default media, and possibly other things
if(!HasCategory)
{
- ClaimBuffer(MemoryArena, &ClaimedMemory, &Category, "Category", 256);
BuildFilter(CategoriesArray, &UniqueCategories, "default");
BuildCategories(&AnnotationClass, &Category, &MarkerIndex, &HasCategory, "default");
}
@@ -1280,7 +1309,6 @@ Anno->time);
{
CopyStringToBuffer(&Category, "");
CopyBuffer(&Text, &Category);
- DeclaimBuffer(&Category, &ClaimedMemory);
}
*Text.Ptr = '\0';
@@ -1308,15 +1336,23 @@ Anno->time);
CopyBuffer(&Player, &Annotation);
- DeclaimBuffer(&Annotation, &ClaimedMemory);
- DeclaimBuffer(&Colour, &ClaimedMemory);
+ // NOTE(matt): Tree structure of "annotation local" buffer dependencies
+ // Category
+ // Text
+ // AnnotationData
+ // AnnotationClass
+ // AnnotationHeader
+
+ DeclaimBuffer(&Category, &ClaimedMemory);
DeclaimBuffer(&Text, &ClaimedMemory);
+ DeclaimBuffer(&AnnotationData, &ClaimedMemory);
DeclaimBuffer(&AnnotationClass, &ClaimedMemory);
DeclaimBuffer(&AnnotationHeader, &ClaimedMemory);
+ Annotation.Ptr = Annotation.Location;
}
#if DEBUG
- printf("EOA\n\n");
+ printf(" --- End of Annotations Loop ---\n\n");
#endif
if(HasQuoteMenu)
{
@@ -1558,14 +1594,29 @@ HMML.metadata.annotator);
CopyBuffer(&Master, &FilterState);
}
- DeclaimBuffer(&QuoteMenu, &ClaimedMemory);
- DeclaimBuffer(&ReferenceMenu, &ClaimedMemory);
+ // NOTE(matt): Tree structure of "global" buffer dependencies
+ // FilterState
+ // Annotation
+ // Colour
+ // Player
+ // FilterMedia
+ // FilterTopics
+ // FilterMenu
+ // ReferenceMenu
+ // QuoteMenu
+ // Title
+
DeclaimBuffer(&FilterState, &ClaimedMemory);
+ DeclaimBuffer(&Annotation, &ClaimedMemory);
+ DeclaimBuffer(&Colour, &ClaimedMemory);
+ DeclaimBuffer(&Player, &ClaimedMemory);
+
DeclaimBuffer(&FilterMedia, &ClaimedMemory);
DeclaimBuffer(&FilterTopics, &ClaimedMemory);
DeclaimBuffer(&FilterMenu, &ClaimedMemory);
+ DeclaimBuffer(&ReferenceMenu, &ClaimedMemory);
+ DeclaimBuffer(&QuoteMenu, &ClaimedMemory);
DeclaimBuffer(&Title, &ClaimedMemory);
- DeclaimBuffer(&Player, &ClaimedMemory);
CopyStringToBuffer(&Master,
"// Filter Mode Toggle\n"