xtc/src/project/project_internal.h

36 lines
1.1 KiB
C

#ifndef XTC_PROJECT_INTERNAL_H
#define XTC_PROJECT_INTERNAL_H
#include "xtc/xtc_project.h"
#include "xtc/xtc_midi.h"
#include "xtc/xtc_mixer.h"
struct xtc_project {
xtc_graph *graph;
uint64_t next_track_id, next_clip_id;
unsigned int tempo;
size_t track_count, clip_count;
uint64_t next_note_id;
size_t note_count;
size_t automation_count;
xtc_automation_point automation[XTC_MAX_AUTOMATION_POINTS];
xtc_note_info notes[XTC_PROJECT_MAX_NOTES];
xtc_track_info tracks[XTC_PROJECT_MAX_TRACKS];
xtc_clip_info clips[XTC_PROJECT_MAX_CLIPS];
};
/**
* @brief Checks for a nonempty UTF-8 name of at most 63 bytes without ASCII controls.
*
* @param name NUL-terminated name.
* @return Nonzero for a valid name, zero otherwise.
*/
int xtc_project_valid_name(const char *name);
/**
* @brief Validates project IDs, timeline ranges, names, graph, notes, and automation.
*
* @param project Project model; borrowed for this call.
* @return XTC_OK on success, or an error code describing the failure.
*/
xtc_result xtc_project_validate(const xtc_project *project);
#endif