Comments (4)
Could you share your use case?
It seems that memory layout of bit field is implementation defined: https://wiki.sei.cmu.edu/confluence/display/c/EXP11-C.+Do+not+make+assumptions+regarding+the+layout+of+structures+with+bit-fields
It means that we can't create portable memory layout with Fiddle/Ruby-FFI.
from fiddle.
Ah, good point about it being implementation defined.
My use case is accessing shared memory (shmat) to communicate with another (not written by me) process. They're using bit fields for space efficiency. I guess for my use case I don't care about portability, but I can understand it being important for this project.
from fiddle.
OK. For your use case, it's better that you use bit operations such as Integer#&
against a byte that includes the target data. The memory layout (which bit has your data) depends on your use case, you may need to do some try & errors. You may need to change your program when you run your program in another environment.
Can we close this because we can't implement bit field support in portable way?
If we find a way to implement it in portable way, we can reopen this.
from fiddle.
Yes, happy to close it. Thank you for considering this and your feedback.
from fiddle.
Related Issues (20)
- Segfault when exiting due to `Fiddle::MemoryView` HOT 3
- struct implement memoryview HOT 1
- Installation of fiddle failing on Ruby 2.7.3 HOT 4
- Debug support in fiddle? HOT 2
- Question: How to allocate an array of structs? HOT 4
- Question: When passing a char as a function argument, should I pass the number obtained by calling the string's ord method? HOT 4
- Segfault when calling `dlopen` on certain Qt frameworks HOT 4
- NetWkstaGetInfo() always fails with INVALID PARAMETER HOT 5
- parse_ctype() fails for "int long len" HOT 1
- Ruby test suite failures with libffi-3.4.2 HOT 15
- Pseudoclasses via ruby-fiddle?
- JRuby support HOT 2
- Raspberry Pi Cannot Update to 1.1.0 HOT 2
- Can't open linker script files HOT 4
- How to pass struct as argument of function HOT 5
- Unreachable code path in Fiddle::ValueUtil#wrap_arg HOT 5
- Fiddle::CParser should expose module methods HOT 3
- If the nested structure is an array of structures HOT 2
- No bool type HOT 7
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from fiddle.