2014-02-16 57 views
4

我正在努力尋找圍繞Julia源代碼的方法,即codegen.cpp。他們使用結構jl_value_t是指本身:jl_value_t在julia源代碼中的含義

#define JL_DATA_TYPE \ 
    struct _jl_value_t *type; 

typedef struct _jl_value_t { 
    JL_DATA_TYPE 
} jl_value_t; 

當調試在Eclipse的源代碼,這似乎並沒有包含任何有用的信息,但它的使用非常普遍。我應該如何解釋這個結構?它包含哪些信息?

回答

6

對我來說,它似乎是一個(髒)的技巧,能夠用C編寫動態代碼。所有盒裝的Julia值都可以有自己的內存佈局,只要它們以指向類型的指針開始,這樣C代碼可以在訪問類型定義的任何其他字段之前檢查類型。

有便利功能來檢查一些jl_value_t*可能指向的常見類型。 (例如,jl_is_type(v),jl_is_long(v),jl_is_symbol(v),jl_is_typevar(v),jl_is_bool(v))。當您知道指向的對象的類型時,您可以將指針指向src/julia.h的正確結構。