Mini-language for selecting nodes with appropriate resources (memory, cores, graphical accelerators etc.)
using expression_ptr = uint8_t std::unique_ptr< Expression >enum Expressions: uint8_tenum resources: uint32_tclass sbn::resources::Anyclass sbn::resources::Bindingsclass sbn::resources::Constantclass sbn::resources::Nameclass sbn::resources::SymbolSBN_RESOURCES_BINARY_OPERATOR && AndSBN_RESOURCES_BINARY_OPERATOR * MultiplySBN_RESOURCES_BINARY_OPERATOR^ XorSBN_RESOURCES_BINARY_OPERATION(Remainder)SBN_RESOURCES_BINARY_OPERATION(Quotient)SBN_RESOURCES_BINARY_OPERATION(Multiply)SBN_RESOURCES_BINARY_OPERATION(Subtract)SBN_RESOURCES_BINARY_OPERATION(Greater_or_equal)SBN_RESOURCES_BINARY_OPERATION(Greater_than)SBN_RESOURCES_BINARY_OPERATION(Less_or_equal)SBN_RESOURCES_BINARY_OPERATION(Less_than)SBN_RESOURCES_BINARY_OPERATOR(%, Remainder)SBN_RESOURCES_BINARY_OPERATOR(/, Quotient)SBN_RESOURCES_BINARY_OPERATOR(-, Subtract)SBN_RESOURCES_BINARY_OPERATOR(+, Add)SBN_RESOURCES_BINARY_OPERATOR(||, Or)SBN_RESOURCES_BINARY_OPERATOR(>=, Greater_or_equal)SBN_RESOURCES_BINARY_OPERATOR(Greater_than)SBN_RESOURCES_BINARY_OPERATOR(<=, Less_or_equal)SBN_RESOURCES_UNARY_OPERATION(Negate)is_valid_name(const char * first, const char * last) -> boolmake_expression(Expressions type) -> expression_ptroperator!(resources r) -> expression_ptroperator!(expression_ptr && a) -> expression_ptroperator!=(const Any & a, resources b) -> expression_ptroperator!=(expression_ptr && a, expression_ptr && b) -> expression_ptroperator!=(expression_ptr && a, const Any & b) -> expression_ptroperator!=(expression_ptr && a, resources b) -> expression_ptroperator!=(resources a, const Any & b) -> expression_ptroperator!=(resources a, expression_ptr && b) -> expression_ptroperator!=(const Bindings & a, const Bindings & b) -> booloperator-(resources r) -> expression_ptroperator-(expression_ptr && a) -> expression_ptroperator<<(std::ostream & out, const Expression & rhs) -> std::ostream &operator<<(sys::byte_buffer & out, const Bindings & rhs) -> sys::byte_buffer &operator<<(std::ostream & out, const Bindings & rhs) -> std::ostream &operator<<(std::ostream & out, const Any & rhs) -> std::ostream &operator==(const Bindings & a, const Bindings & b) -> booloperator>>(sys::byte_buffer & in, Bindings & rhs) -> sys::byte_buffer &read(const std::string & s, int max_depth) -> expression_ptrread(const char * s, int max_depth) -> expression_ptrread(std::istream & in, int max_depth) -> expression_ptrread(const char * begin, const char * end, int max_depth) -> expression_ptrread(sys::byte_buffer & in) -> expression_ptrresource_to_string(resources r) -> const char *string_to_resource(const char * s, size_t n) -> resources