Skip to content

Commit

Permalink
Refactored into separate source files
Browse files Browse the repository at this point in the history
  • Loading branch information
elfprince13 committed Nov 26, 2024
1 parent ce6f711 commit 2951609
Show file tree
Hide file tree
Showing 10 changed files with 1,101 additions and 1,024 deletions.
20 changes: 14 additions & 6 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,18 @@ cmake_minimum_required(VERSION 3.13.5)
set(CMAKE_CXX_STANDARD 17)
project(Dependent-Cxx)

set(DEPND_INCLUDE_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/include)
set(DEPND_LIBRARY_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/lib)
find_package(Boost 1.73)
set(dependent_cxx_INCLUDE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/include)
set(base_path ${dependent_cxx_INCLUDE_DIR}/dependent-cxx)

add_executable(test-depend example/depend.cc)
target_compile_options(test-depend PUBLIC -Wall -Wextra)
target_link_libraries(test-depend LINK_PUBLIC Boost::boost) #static-hmap)
add_library(dependent-cxx INTERFACE)
target_sources(dependent-cxx INTERFACE
${base_path}/algebra.hpp
${base_path}/array.hpp
${base_path}/core.hpp
${base_path}/core-io.hpp
)
target_include_directories(dependent-cxx INTERFACE ${dependent_cxx_INCLUDE_DIR})
target_compile_options(dependent-cxx INTERFACE -Wall -Wextra)


add_subdirectory(example)
10 changes: 10 additions & 0 deletions example/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
project(Examples)

add_executable(test-depend depend.cc)
target_link_libraries(test-depend LINK_PUBLIC dependent-cxx)

add_executable(test-log2 log2.cc)
target_link_libraries(test-log2 LINK_PUBLIC dependent-cxx)

add_executable(test-array-concat array-concat.cc)
target_link_libraries(test-array-concat LINK_PUBLIC dependent-cxx)
28 changes: 28 additions & 0 deletions example/array-concat.cc
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
#include <dependent-cxx/algebra.hpp>
#include <dependent-cxx/array.hpp>
#include <dependent-cxx/core-io.hpp>

using namespace dependent_cxx;

// WIP demo of concatenating a dynamic length array with a static length array
int main(int argc, const char* argv[]) {
RootFrame();
constexpr auto v32 = FreshType(32);
if constexpr (constexpr auto proofNonneg = algebra::less_than_or_equal_to<Zero,TYPEOF(v32)>::apply(Zero{}, v32, Context{});
std::nullopt == proofNonneg) {
std::cerr << "Can't make negative-length array" << std::endl;
} else {
constexpr algebra::less_than_or_equal_to<Zero, TYPEOF(v32)> lte_ev = *proofNonneg;
collections::Array<FreshTag(), float, TYPEOF(v32)> a32(v32, lte_ev);

constexpr Constant<64> SixtyFour;
constexpr algebra::less_than_or_equal_to<Zero, TYPEOF(SixtyFour)> sixty_four_nn{Zero{}, SixtyFour};
collections::Array<FreshTag(), float, TYPEOF(SixtyFour)> a64(SixtyFour, sixty_four_nn);

//auto a96{collections::concatenate<FreshTag()>(a64, a32)};
// TODO: finish implementing concatenate

}

return 0;
}
28 changes: 28 additions & 0 deletions example/broken-do-not-use.cc
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
// WIP: proof that a variant is one of a only a subset of possible values
/*
template<class OldVar, class NewVar>
class SubsetVariant {};
template<class OldVarH, class ...OldVarTs, class ...NewVars>
class SubsetVariant<std::variant<OldVarH, OldVarTs...>,std::variant<NewVars...>> {
template<class Head, class ...Tail>
inline static std::variant<OldVarH, OldVarTs...> applyHelper(std::variant<NewVars...> input) {
if(std::holds_alternative<Head>(input)) {
return std::get<Head>(input);
} else {
return applyHelper<Tail...>(input);
}
}
template<class ...N, std::enable_if_t<sizeof...(N) == 0, bool> = true>
inline static std::variant<OldVarH, OldVarTs...> applyHelper(std::variant<NewVars...> ) {
static_assert(sizeof...(N) == 0);
return std::variant<OldVarH, OldVarTs...>(([]() -> OldVarH { throw std::logic_error("These don't overlap"); })());
}
public:
constexpr static std::variant<OldVarH, OldVarTs...> apply(std::variant<NewVars...> input) {
return applyHelper<OldVarH, OldVarTs...>(input);
};
};
*/
Loading

0 comments on commit 2951609

Please sign in to comment.