Initial problem : I tried to export to wasm different complex structures. Time benchmarks were strange and in linear time for every structure.
So I tried to export vectors of numbers
license: mit |
// "How to pass a function in a template parameter ?" | |
// (I wanted to pass a lambda but it is not possible) | |
// 2019-12-27 | |
#include <iostream> | |
#include <string> | |
#include <vector> | |
#include <array> |
// I was bored so I programmed the binpacking relaxed problem | |
#include <iostream> | |
#include <array> | |
#include <algorithm> | |
#include <functional> | |
struct Item { | |
unsigned int number; | |
unsigned int utility; | |
double weight; |
// Today I discovered that we can write horrible code in Javascript thanks to the thisArg argument of Array.reduce.filter | |
function myFilter(e) { | |
if (e % 2) { | |
this.val += e; | |
} | |
return e % 3 == 0; | |
} | |
var arr = [1,2,3,4,5,6,7,8,9,10]; |
#!/bin/bash | |
cd sophia_rs | |
git checkout master | |
git fetch pchampin | |
git rebase pchampin/master | |
git push | |
cd ../PRIWA/wasm_example/ | |
rm Cargo.lock | |
./run_server.sh reload |
/// Code example of how to have mutable data in an object passed by ref | |
/// The use case of this snippet is to cache some computed data | |
use core::cell::RefCell; | |
struct Cat { | |
age: RefCell<Option<i32>> | |
} | |
extern crate wasm_bindgen; | |
extern crate js_sys; | |
use wasm_bindgen::prelude::*; | |
use std::collections::BTreeSet; | |
#[wasm_bindgen] | |
pub struct IntVector { | |
values: Vec<i32> |
template <bool try_lock_return> | |
class DebugMutex { | |
#ifdef DEBUG | |
private: std::mutex _mutex; | |
public: | |
void lock() { _mutex.lock(); } | |
void unlock() { _mutex.unlock(); } | |
bool try_lock() { return _mutex.try_lock(); } | |
#else | |
public: |
// Some functions I coded to help a friend that was | |
// enrolled in an Engineering School | |
// 2019-05-19 | |
#include <stdio.h> | |
#include <stdlib.h> | |
char ** reverse(int argc, char * argv[]) { | |
char ** new_argv = malloc(sizeof(char *) * argc); |