Giter Club home page Giter Club logo

crstl's People

Contributors

redorav avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

crstl's Issues

vsnprintf

Some compilers don't have this function. Also, for consistency with all compilers, we may want to reimplement it

path

  • Add more compare and comparei versions of the functions to match the string interface
  • Rename path_base to basic_path for consistency with string? Put in detail?

thread

  • Don't join on thread destruction, kill it instead (or perhaps via a thread param option)

cycle_timer

  • How to do rdtsc on Android
  • rdtsc and before/after barriers should be a template parameter; default to true, but optional
  • Add a serializing_instruction to insert a barrier between the timers
  • cycle_timer natvis

vector

  • Add allocator class
  • Add vector functionality
  • Share relevant functionality with fixed_vector
  • erase()
  • insert()

deque

  • Add erase function
  • Only allow POT chunk sizes - rework division to be &
  • Add a reserve() function. We can avoid a lot of reallocations if we know our size upfront. Due to the way our deque works, we can allocate all the chunk upfront and avoid all the expensive checking and resizing during push_back
  • Add a more efficient starting point. If we know that we're going to be doing many push_backs, push_fronts or a balanced approach, we can try to rebalance the chunks to avoid moving them around so much

natvis

  • atomic
  • bitset
  • compressed_pair
  • critical_section
  • fixed_function
  • fixed_path
  • fixed_hashmap
  • function
  • pair
  • path
  • process
  • string_view
  • thread
  • timer
  • tuple

validation

Currently we use crstl_assert everywhere to do a very strict validation. However many functions are safe without the validations, or we might want to turn it off for certain objects. We should provide more granular or several levels of validation such that we distinguish between undefined behavior that would result in a crash (out of bounds, etc), and incorrect behavior such as a vsnprintf formatting error.

  • crstl_assert with callback of some sort
  • crstl_validation macro for non-essential validation

string

  • erase
  • erase_all
  • erase_if
  • replace
  • replace_all(char, char)
  • replace_all(string, string)
  • replace_all(char, string)
  • replace_all(string, char)
  • replace_all_utf8(char, char)
  • split
  • to_string
  • optimize fixed_string so that length is encoded in the last byte, if length < 256
  • optimize string so that optionally length and capacity are not 8 bytes each but less if usage permits. This has an impact on the SSO so take that into account

friend operators

To be able to declare bidirectional operators, not just the ones that take this as the first parameter, it's probably worth declaring these operators too. For example

  • string comparison with const char*
  • [ ]

hashmap

  • Implement fixed_hashmap
  • Implement hashmap
  • Implement stack_hashmap
  • Move common code into hashmap_common (e.g. bucket_node and bucket_iterator
  • Don't call placement new for simple types

process

  • Allow stdin
  • Fix how to search default paths
  • Deal with custom environments
  • Terminate a process in the destructor or join? Essentially same question as with thread

directory_watcher

Add a directory watcher that can monitor a directory and accept callback

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.