const char *title;
};
+LevelMetadata *create_level_metadata(const char *title)
+{
+ trace_assert(title);
+
+ Lt *lt = create_lt();
+
+ LevelMetadata *level_metadata = PUSH_LT(
+ lt, nth_calloc(1, sizeof(LevelMetadata)), free);
+ if (level_metadata == NULL) {
+ RETURN_LT(lt, NULL);
+ }
+ level_metadata->lt = lt;
+
+ level_metadata->title = PUSH_LT(
+ lt,
+ trim_endline(string_duplicate(title, NULL)),
+ free);
+ if (level_metadata->title == NULL) {
+ RETURN_LT(lt, NULL);
+ }
+
+ return level_metadata;
+}
+
LevelMetadata *create_level_metadata_from_file(const char *filename)
{
trace_assert(filename);
{
trace_assert(line_stream);
- Lt *lt = create_lt();
- if (lt == NULL) {
+ const char *line = line_stream_next(line_stream);
+ if (line == NULL) {
return NULL;
}
- LevelMetadata *level_metadata = PUSH_LT(
- lt, nth_calloc(1, sizeof(LevelMetadata)), free);
- if (level_metadata == NULL) {
- RETURN_LT(lt, NULL);
- }
- level_metadata->lt = lt;
-
-
- level_metadata->title = PUSH_LT(
- lt,
- trim_endline(string_duplicate(line_stream_next(line_stream), NULL)),
- free);
- if (level_metadata->title == NULL) {
- RETURN_LT(lt, NULL);
- }
-
- return level_metadata;
+ return create_level_metadata(line);
}
void destroy_level_metadata(LevelMetadata *level_metadata)