-
Notifications
You must be signed in to change notification settings - Fork 1
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
API Stability seqan3.1 #274
Comments
Core-Meeting 2021-01-11:
|
Core-Meeting 2021-01-11:
Doxygen:
TODO:
Code Look-And-Feel: /*!\brief ....
* \noapi // shows in doxygen that this class is ... NOAPI
* \experimentalapi // ... experimental
* \stableapi // ... stable
*/
template </*SEQAN3_EXPERIMENTALAPI*/ typename derived_type, /*SEQAN3_EXPERIMENTALAPI*/ size_t size, /*SEQAN3_EXPERIMENTALAPI*/ typename char_t = char>
class SEQAN3_STABLEAPI SEQAN3_DEPRECATED_310 alphabet_base : public base, private base2, protected base3
{
public:
//!\brief Blah \stableapi
alphabet_base SEQAN3_STABLEAPI () = default;
//!\brief Blah \stableapi{models std::input_iterator} \hideinitializer
using iterator = my_iterator_type;
//!\brief Blah \stableapi
using value_type = std::string;
//!\brief Blah \experimentalapi
using type2 SEQAN3_EXPERIMENTALAPI = double;
//!\brief Blah
int foo();
//!\brief Blah \stableapi
int var;
};
int main()
{
using alphabet_t = alphabet_base; // guranteed, stable-api; alphabet_base name isn't allowed to change
alphabet_base alphabet{}; // guranteed, stable-api; default constructor must be available
typename alphabet_base::iterator; // guranteed, stable-api; meber type 'iterator' must be available, and must model std::input_iterator, but the implementing class can change (e.g. my_iterator_type could be exchanged by my_iterator_type2)
typename alphabet_base::value_type; // guranteed, stable-api, value_type must be std::string and isn't allowed to change
typename alphabet_base::type2: // experimental (by default, because no annotation)
alphabet.var; // guranteed, stable-api
alphabet.foo(); // is implicitly no-api, because it has no api label.
}; Whish-List:
|
6 tasks
Problems encountered:Doxygen can't handle inherited constructors. #if SEQAN3_DOXYGEN_ONLY(1)0
//!\copydoc seqan3::aminoacid_base::aminoacid_base(other_aa_type const other)
//!\sa seqan3::aminoacid_base::aminoacid_base(other_aa_type const other)
explicit constexpr aminoacid_base(other_aa_type const other) noexcept;
#endif //SEQAN3_DOXYGEN_ONLY(1)0 We work-around this at some places, e.g. in cigar alphabet /*!\brief Construction via a value of one of the components.
* \tparam component_type One of the component types; must be uniquely contained in the type list of the composite.
* \param[in] alph The value of a component that should be assigned.
*
* \include test/snippet/alphabet/cigar/cigar_value_construction.cpp
*/
SEQAN3_DOXYGEN_ONLY(( constexpr cigar(component_type const alph) noexcept {} ))
|
From my POV done. |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
version.hpp
#277The text was updated successfully, but these errors were encountered: