{"id":31925030,"url":"https://github.com/stringepsilon/ustring","last_synced_at":"2026-02-19T18:04:31.214Z","repository":{"id":66057707,"uuid":"76433933","full_name":"StringEpsilon/ustring","owner":"StringEpsilon","description":"UTF-8 friendly variable length NUL-terminated string (wrapper).","archived":false,"fork":false,"pushed_at":"2017-03-26T12:07:47.000Z","size":18,"stargazers_count":1,"open_issues_count":1,"forks_count":0,"subscribers_count":0,"default_branch":"master","last_synced_at":"2025-10-21T09:37:12.156Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mpl-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/StringEpsilon.png","metadata":{"files":{"readme":"readme.md","changelog":null,"contributing":null,"funding":null,"license":"COPYING","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2016-12-14T07:05:02.000Z","updated_at":"2023-03-01T15:53:23.000Z","dependencies_parsed_at":"2023-04-06T00:00:16.485Z","dependency_job_id":null,"html_url":"https://github.com/StringEpsilon/ustring","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/StringEpsilon/ustring","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/StringEpsilon%2Fustring","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/StringEpsilon%2Fustring/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/StringEpsilon%2Fustring/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/StringEpsilon%2Fustring/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/StringEpsilon","download_url":"https://codeload.github.com/StringEpsilon/ustring/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/StringEpsilon%2Fustring/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29626642,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-19T18:02:07.722Z","status":"ssl_error","status_checked_at":"2026-02-19T18:01:46.144Z","response_time":117,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-10-14T00:26:24.197Z","updated_at":"2026-02-19T18:04:31.209Z","avatar_url":"https://github.com/StringEpsilon.png","language":null,"readme":"Wrapper class for a variable length zstring\n\nThis implementation will allocate slightly more memory for each string than nescessary, to speed up some concatenations. You can modify this behavior by adjusting the constants in the ustringConstants namespace at the beginning of the file.\n\n## License:\n\nMPL 2.0. \n* You can use, modify and distribute ustring as you please. You can even include it in proprietary projects.\n* You if you distribute a binary of your project, you must also provide the source code file ustring.bi you used (copyleft).\n* All other code in your project remains under your license.\n\nSee COPYING for more details.\n\n## Current status:\n\nUseable, but not all that useful as of now. Some functions are not implemented and I have not tested the performance. If you decide to use it now, prepare for some minor API changes in the future.\nAnd please make use of the bug tracker.\n\n## Goals:\n\n* A variable length zstring, that behaves like a normal zstring.\n* Validation of UTF-8 strings\n* Correct character counting and sane string manipulation\n* Decent performance. \n\n## Non-Goals:\n\n* Rendering of any kind. Use pango for that.\n* \"Typographical manipulation\", i.e. lcase and ucase, ltr- and rtl marks, ...\n* 'Sane' support for combining characters\n* Identification / categorization of codepoints and characters.\n\nustring is meant to be just a string, not the kitchensink solution to your Unicode problems. \n\n## API\n\n    ustring.Length\nis a property that returns the number of characters in the string. You can use len(myustring) to get the same value.\n\n    ustring.Size \nis a property that returns the number of bytes in use by the string data. The actual memory allocated might be slightly higher than that,\njust like with regular FreeeBASIC strings.\n\n    ustring.+=\ncan be used to add additional characters, like you'd with regular strings. The operator accepts strings, ustrings, and zstrings,\n\n    ustring.Mid(start, length)\nBehaves like MID(string, start, length), but uses the ustring character count.\nNote: You can use the standard library MID() on ustrings.\n\nExample:\n```\ndim test as ustring = \"I ♥ FreeBASIC\" ' the heart symbol is 3 codepoints long.\nprint test.Mid(3,1) ' ♥\nprint MID(test, 3, 3) ' ♥\n```\n\n    ustring.Left(length)\nBehaves like LEFT(string, length), but uses the ustring character count.\nNote: You can not use the standard library LEFT() on ustrings, until some bugs in the runtime are fixed.\n\nExample:\n```\ndim test as ustring = \"I ♥ FreeBASIC\" ' the heart symbol is 3 codepoints long.\nprint test.Left(3) '\u003eI ♥\u003c\n```\n\n\n    ustring.Right(length)\nBehaves like RIGHT(string, length), but uses the ustring character count.\nNote: You can not use the standard library RIGHT() on ustrings, until some bugs in the runtime are fixed.\n\n\n    ustring.Char(index) as ustring\nreturns the character at the given index or zero length ustring. This is zero indexed\nand based on the internal character counting.\n\nExample:\n```\ndim test as ustring = \"I ♥ FreeBASIC\"\nprint test.char(2) ' \"♥\"\n```\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fstringepsilon%2Fustring","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fstringepsilon%2Fustring","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fstringepsilon%2Fustring/lists"}