MathGroup Archive 2008

[Date Index] [Thread Index] [Author Index]

Search the Archive

Re: Mathlink: How do I pass arbitrary data from Mathematica to C?

  • To: mathgroup at smc.vnet.net
  • Subject: [mg86946] Re: Mathlink: How do I pass arbitrary data from Mathematica to C?
  • From: Jens-Peer Kuska <kuska at informatik.uni-leipzig.de>
  • Date: Thu, 27 Mar 2008 08:16:09 -0500 (EST)
  • References: <fs4rmb$p3s$1@smc.vnet.net> <fs7ilu$gll$1@smc.vnet.net> <fsd6e6$98p$1@smc.vnet.net>

Hi,


> Do you have an example of this, where the format of the data is not
> known in advance? 

Do you think this is a Mathematica problem ?
It is up to *you* to set up your data structure.
But


typedef struct Atom {
           int what;
           union {
             long int N;
             double  D;
             struct Symbol *S;
            } Entry;
          } Atom;

may do that. And your data structure may be

typedef struct Expression {
            int what;
            union {
              Atom *atm;
              struct {
                struct Expression *First;
                struct Expression *Rest;
               } List;
             } Entry;
	} Expression;

clearly you need a symbol table and more data types than
long int and double, rationals and complex may be added.

It *must* be considered just a collection of bytes
> of data. The data can be any length from one byte to about a MB. It
> might be binary data, but will probably be text.
> The data will be passed to some hardware. The format of the data
> depends on the hardware. Hence I just want to pass what is a
> collection of bytes. I cant assume they will be integers (they might
> be), I cant assume they will be floating point values (they might
> be).
> 


Regards
   Jens


  • Prev by Date: FindMinimum[Print[]]
  • Next by Date: Re: Problems with differentiating Piecewise functions
  • Previous by thread: Re: Mathlink: How do I pass arbitrary data from Mathematica to C?
  • Next by thread: Re: Mathlink: How do I pass arbitrary data from Mathematica to C?