{"id":19209732,"url":"https://github.com/tmatijevich/iecstring","last_synced_at":"2025-05-12T19:21:40.259Z","repository":{"id":167649115,"uuid":"405436131","full_name":"tmatijevich/IecString","owner":"tmatijevich","description":"Protected string functions for C/C++ and IEC 61131-3","archived":false,"fork":false,"pushed_at":"2024-04-14T01:53:32.000Z","size":182,"stargazers_count":7,"open_issues_count":0,"forks_count":2,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-05-12T19:21:35.616Z","etag":null,"topics":["automation-studio","iec61131-3","library","safe-string"],"latest_commit_sha":null,"homepage":"","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/tmatijevich.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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}},"created_at":"2021-09-11T17:05:23.000Z","updated_at":"2025-04-30T04:29:11.000Z","dependencies_parsed_at":null,"dependency_job_id":"f456c189-f40a-459f-a8c7-82d5860ae0ef","html_url":"https://github.com/tmatijevich/IecString","commit_stats":null,"previous_names":["tmatijevich/iecstring"],"tags_count":12,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tmatijevich%2FIecString","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tmatijevich%2FIecString/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tmatijevich%2FIecString/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tmatijevich%2FIecString/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/tmatijevich","download_url":"https://codeload.github.com/tmatijevich/IecString/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":253805971,"owners_count":21967076,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["automation-studio","iec61131-3","library","safe-string"],"created_at":"2024-11-09T13:33:00.674Z","updated_at":"2025-05-12T19:21:40.218Z","avatar_url":"https://github.com/tmatijevich.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"# IecString\n\n[![Made for B\u0026R](https://raw.githubusercontent.com/hilch/BandR-badges/dfd5e264d7d2dd369fd37449605673f779db437d/Made-For-BrAutomation.svg)](https://www.br-automation.com)\n[![GitHub License](https://img.shields.io/github/license/tmatijevich/IecString)](https://github.com/tmatijevich/IecString?tab=MIT-1-ov-file#MIT-1-ov-file)\n[![GitHub Downloads (all assets, all releases)](https://img.shields.io/github/downloads/tmatijevich/IecString/total)](https://github.com/tmatijevich/IecString/releases/latest/download/IecString.zip)\n[![GitHub issues](https://img.shields.io/github/issues-raw/tmatijevich/IecString)](https://github.com/tmatijevich/IecString/issues)\n\nIecString is an [Automation Studio](https://www.br-automation.com/en-us/products/software/automation-software/automation-studio/) library of string functions.  \nThe functions **enhance** string manipulation, **protect** memory, and support [ANSI C/C++](https://en.wikipedia.org/wiki/ANSI_C) and [IEC 61131-3](https://en.wikipedia.org/wiki/IEC_61131-3).\n\n**NOTE**: This is not an official library and is supported through the community.  IecString is provided as-is under the [MIT License](https://mit-license.org/) agreement.  Source code, documentation, and issues are managed through [GitHub](https://github.com/tmatijevich/IecString).\n\n# Features\n\n* :lock: Protect against\n    * buffer overflow\n    * overlapping strings\n    * accessing null pointers\n* :rocket: Lightweight performance\n* :no_entry_sign: Input strings are immutable\n* :white_check_mark: Compatible with ANSI C/C++ and IEC 61131-3\n* :bulb: Inspiration from [C standard library](https://cplusplus.com/reference/clibrary/), [Python string methods](https://docs.python.org/3/library/stdtypes.html#string-methods), [JavaScript string methods](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String#instance_methods)\n\n\nFunction | Read | Write | Description\n---|---|---|---\n[IecStringCopy](https://github.com/tmatijevich/IecString/blob/main/IecString.fun#L2) | :mag: | :memo: | Copy source to destination up to size of destination or source length\n[IecStringConcat](https://github.com/tmatijevich/IecString/blob/main/IecString.fun#L10) | :mag: | :memo: | Concatenate source to destination up to size of destination or source length\n[IecStringCompare](https://github.com/tmatijevich/IecString/blob/main/IecString.fun#L18) | :mag: | | Compare characters of two strings\n[IecStringLength](https://github.com/tmatijevich/IecString/blob/main/IecString.fun#L26) | :mag: | | Determine the length of a string\n[IecStringFirst](https://github.com/tmatijevich/IecString/blob/main/IecString.fun#L32) | :mag: |  | First occurrence of character in source\n[IecStringLast](https://github.com/tmatijevich/IecString/blob/main/IecString.fun#L39) | :mag: |  | Last occurrence of character in source\n[IecStringFind](https://github.com/tmatijevich/IecString/blob/main/IecString.fun#L46) | :mag: |  | Find substring in source\n[IecStringFirstIn](https://github.com/tmatijevich/IecString/blob/main/IecString.fun#L53) | :mag: |  | First occurrence in source of any character from find\n[IecStringLengthIn](https://github.com/tmatijevich/IecString/blob/main/IecString.fun#L60) | :mag: |  | Initial length in source containing only characters from find\n[IecStringStartsWith](https://github.com/tmatijevich/IecString/blob/main/IecString.fun#L67) | :mag: | | Does source start with prefix\n[IecStringEndsWith](https://github.com/tmatijevich/IecString/blob/main/IecString.fun#L74) | :mag: | | Does source end with suffix\n[IecStringReplace](https://github.com/tmatijevich/IecString/blob/main/IecString.fun#L81) | :mag: | :memo: | Find in source and replace in destination\n[IecStringSplit](https://github.com/tmatijevich/IecString/blob/main/IecString.fun#L91) | :mag: | :memo: | Split source into tokens\n[IecStringFormat](https://github.com/tmatijevich/IecString/blob/main/IecString.fun#L103) | :mag: | :memo: | Format string with runtime data\n[IecStringDecimal](https://github.com/tmatijevich/IecString/blob/main/IecString.fun#L112) | | :memo: | Convert integer to string as decimal\n[IecStringFloat](https://github.com/tmatijevich/IecString/blob/main/IecString.fun#L122) | | :memo: | Convert float to string\n[IecStringDateTime](https://github.com/tmatijevich/IecString/blob/main/IecString.fun#L133) | :mag: | :memo: | Format date and/or time\n\n:mag: The functions marked in the read column are **reading** from memory.  \n:memo: The functions marked in the write column are **writing** to memory *within the size* of `destination`.\n\n# Install\n\n- [Download](https://github.com/tmatijevich/IecString/releases/latest/download/IecString.zip) the binaries and extract the archive\n- Add to the project as **existing library** from the toolbox in logical view\n\n# Build\n\n- Clone or download source files\n- Add to the project as **existing library**\n    - Option to add as **reference**\n\nAlternatively, add as submodule to an existing project repository.\n\n```\ncd \u003crepository\u003e\ngit submodule add https://github.com/tmatijevich/IecString.git \u003cproject\u003e/Logical/Libraries/IecString\n```\n\nThen add to project as **existing library**.\n\n# Performance \u0026 Unit Tests\n\nSee the [IecStringProject](https://github.com/tmatijevich/IecStringProject) for all function unit tests and hardware performance tests.\n\n# Documentation\n\nOnce installed, the help file can be view using the `F1` function key.\n\nSee the [IecStringHelp](https://github.com/tmatijevich/IecStringHelp).  This help is included in the binary download of this library.\n\n### Dependencies\n\n- [AsTime](https://help.br-automation.com/#/en/4/libraries%2Fastime%2Fastime.html)\n\n### Authors\n\n- Tyler Matijevich ([@tmatijevich](https://github.com/tmatijevich))\n\n### Related Projects\n\n- [intel/safestringlib](https://github.com/intel/safestringlib)\n- [B\u0026R/BrbLibs](https://github.com/br-automation-com/BrbLibs-lib-src)\n- [Loupe/StringExt](https://github.com/loupeteam/StringExt)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftmatijevich%2Fiecstring","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftmatijevich%2Fiecstring","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftmatijevich%2Fiecstring/lists"}