Skip to content

GabrielDosReis/ifc

 
 

Repository files navigation

IFC SDK

The IFC SDK provides datatypes and code supporting the read and write of IFC files. This is an experimental project aiming at advancing implementation and uses of C++ Modules at large. The SDK contains C++ datatypes that can be memory-mapped directly onto the on-disk format. See the IFC Specification for more details.

If you want to participate in the development of the IFC SDK, you are welcome! You can report issues, comment on pull requests, and learn about what we are working on. You can also submit pull requests to fix bugs or add features reflecting the Specification: see CONTRIBUTING.md for more information.

Building and Running

This project uses CMake for defining projects, and the code has been tested to work on Windows and Linux. It can be built and run under WSL (Windows Subsystem for Linux) as well.

The JavaScript IFC viewer can be run by loading the index.html file in a browser.

IFC files to experiment with can be generated by using a current Microsoft C++ compiler. There are a couple of IFC files checked into the repo for basic testing purposes. Longer term, we want to be able to generate IFC files using the SDK itself. To generate an IFC file, you can use a current Visual C++ compiler. The following will generate an IFC containing almost everything in the test.cpp translation unit. Currently, non-inline functions or methods will not be generated into the IFC.

cl /std:c++20 /exportHeader test.cpp

This will create an IFC file named test.cpp.ifc. This can be dumped with ifc-printer like this.

ifc-printer.exe --color test.cpp.ifc

See BUILDING.md for more information.

Contributing

This project welcomes contributions and suggestions. Most contributions require you to agree to a Contributor License Agreement (CLA) declaring that you have the right to grant us the right to use your contribution. For details, visit https://cla.opensource.microsoft.com.

When you submit a pull request, a CLA bot will automatically determine whether you need to provide a CLA and decorate the PR (Pull Request) appropriately (e.g., status check, comment). Simply follow the instructions provided by the bot. You will only need to do this once across all repos using our CLA.

See CONTRIBUTING.md for more information.

Trademarks

This project may contain trademarks or logos for projects, products, or services. Authorized use of Microsoft trademarks or logos is subject to and must follow Microsoft's Trademark & Brand Guidelines. Use of Microsoft trademarks or logos in modified versions of this project must not cause confusion or imply Microsoft sponsorship. Any use of third-party trademarks or logos are subject to those third-party's policies.

Microsoft Open Source Code of Conduct

This project has adopted the Microsoft Open Source Code of Conduct.

Resources:

License

Copyright (c) Microsoft Corporation.

SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception

About

SDK for the IFC specification at https://github.com/microsoft/ifc-spec

Resources

License

Code of conduct

Security policy

Stars

Watchers

Forks

Packages

No packages published

Languages

  • C++ 98.5%
  • CMake 1.5%