View Issue Details

IDProjectCategoryView StatusLast Update
0001240OpenMPT[All Projects] libopenmptpublic2019-09-05 13:39
Reportermanx Assigned Tomanx  
PrioritynormalSeverityminorReproducibilityalways
Status assignedResolutionopen 
Product VersionOpenMPT 1.29.00.* (current testing) 
Target VersionOpenMPT 1.29 / libopenmpt 0.5 (goals)Fixed in Version 
Summary0001240: Modernize C++ API
Description

We should support more modern language features in the C++ API as appropriate:

C++11:

  • enum class for profile_file_header flags and result
  • enum class for module::render_param
  • enum class for module::command_index
  • inline namespace for API/ABI versioning (requires mirroring of the complete API though, might be worthwhile for 1.0 though)
  • constexpr library API version information (in addition to preprocessor)

C++14:

C++17:

  • std::byte buffer for module::module()

C++20:

  • std::span buffer for module::module()
  • std::span for module::read buffers
  • std::u8string for all strings
TagsNo tags attached.
Has the bug occurred in previous versions?
Tested code revision (in case you know it)

Relationships

related to 0001256 resolvedmanx require C++17 
related to 0001241 assignedmanx std::string_view for ctl key, and non-string overloads for ctl_get and ctl_set 

Activities

manx

manx

2019-09-05 13:39

administrator   ~0004040

If we want to support C++17 features in the libopenmpt API which I think we should for the next version), we either need to require C++17 also for building libopenmpt, or need to support multiple ABI-incompatible variants of the same libopenmpt version (which would be a nightmare).

Issue History

Date Modified Username Field Change
2019-07-29 20:23 manx New Issue
2019-07-29 20:23 manx Status new => assigned
2019-07-29 20:23 manx Assigned To => manx
2019-07-29 20:47 manx Relationship added related to 0001241
2019-09-05 13:10 manx Relationship added related to 0001256
2019-09-05 13:39 manx Note Added: 0004040