Giter VIP home page Giter VIP logo

cuneicode's Introduction

Cuneicode

If you follow the River, you will find the C.

This library is the hyper-focused span-based C library for Unicode Transformation Format encoding and decoding that is implementing the ideas found in the latest and greatest of the encoding papers for C functions, plus additional functionality:

Documentation

The documentation can be found on https://ztdcuneicode.rtfd.io/.

In-Depth Writing

Articles explaining the principles for both C and C++ can be found at the following locations:

Additional Details

Much more about this work and its progress can be found at the text page on this site.

License & Contributions

By contributing to this repository, you agree that your contributions will be released to the copyright of JeanHeyd "ThePhD" Meneide and Shepherd's Oasis, LLC under the Apache 2.0 License or the relevant Commercial License. See the LICENSE file and the CONTRIBUTING file for details.

cuneicode's People

Contributors

artoria2e5 avatar thephd avatar

Stargazers

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

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

cuneicode's Issues

Test Enchancements: Count, Validation, and Unbounded Write modes

Counting Mode, Validation Mode, and Unbounded Output mode need to all be tested under this new paradigm.

  • Counting mode tests (cxnrtocxn(&output_size, (OutChar*)nullptr, &input_size, input);)
  • Validation mode tests (cxnrtocxn(nullptr, (OutChar*)nullptr, &input_size, input);)
  • Unbounded mode tests (cxnrtocxn(nullptr, (OutChar*)nullptr, &input_size, input);)

These can likely be added as additional assertions to the current roundtrip tests, to avoid having to make Yet Another Harness for them. It is also fine because the arrays there are sized specifically to avoid hitting any limits during single write-outs. Excessively-huge buffers will need to be made in the bulk cases, especially for unbounded output however.

`libiconv` output size counting

https://thephd.dev/cuneicode-and-the-future-of-text-in-c

output size counting (iconv(cd, inbuf, inbytesleft, nullptr, outbytesleft));

I'm not very sure about this. libiconv has the concept of reversible and irreversible mappings. From the manual of it, it said it will only returns the number of non-reversible conversions performed during this call.

https://www.gnu.org/savannah-checkouts/gnu/libiconv/documentation/libiconv-1.17/iconv.3.html

I have no idea if this number is the same as the output size or not.

Btw, I have never seen people on the internet use libiconv this way. Most of the time, they guess the output size. I don't even know that it's possible to have iconv to do a dry run to calculate the output size like this. I think this is libicu style!

https://stackoverflow.com/questions/13297458/simple-utf8-utf16-string-conversion-with-iconv

Build fails with GCC 12.2.1 and Clang 14.0.5

When building commit 2f30d70 on Fedora linux, get the following error:

/home/cuneicode/source/ztd/cuneicode/detail/index.cpp:74:33: error: no member named 'ranges_adl' in namespace 'ztd::ranges'
auto __last = ::ztd::ranges::ranges_adl::adl_cend(__index_code_point_map);
~~~~~~~~~~~~~~~^

Test Enhancements: Multi tests for Typed Conversions, Similar Tests for Multi/Single through cnc_conversion type

The title has it: while we thoroughly test the single-off conversions, we don't fully test the multi-conversion functionality, so that should be added to the test suite. We should also implement such tests using the registry and similar. Finally, we need to test the allocating and non-allocating functions.

  • Test multi (cxnsrtocxns) bulk functions for all 5 core types, similar to the single tests
  • Test single conversions for the cnc_conversion types for all 5 core types / encodings (execution, wide execution, UTF-8, UTF-16, UTF-32)
  • Test multi conversions for the cnc_conversion types for all 5 core types / encodings (execution, wide execution, UTF-8, UTF-16, UTF-32)
  • Test allocation successes and failures for cnc_registry and related opening functions
  • Test that the heap is not used when the space-providing functions are used for the registry and similar.

Sorry, but I don't use CMake!

Please tell me how to do manual deployment to get started. I have no problems building people's software with CMake, but I personally don't use CMake as the build system for my code. I'm a hobbyist and I prefer using an IDE that I could click and have it build and run my program instead of having to write a build script. I don't want to use CMake, including CMake GUI.

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.