diff options
Diffstat (limited to 'stdlib/source/lux/target/jvm/class.lux')
-rw-r--r-- | stdlib/source/lux/target/jvm/class.lux | 133 |
1 files changed, 0 insertions, 133 deletions
diff --git a/stdlib/source/lux/target/jvm/class.lux b/stdlib/source/lux/target/jvm/class.lux deleted file mode 100644 index ad90c3db5..000000000 --- a/stdlib/source/lux/target/jvm/class.lux +++ /dev/null @@ -1,133 +0,0 @@ - (.module: - [lux #* - [abstract - [equivalence (#+ Equivalence)] - ["." monad (#+ do)]] - [control - ["." state] - ["." try (#+ Try)]] - [data - ["." product] - [format - [".F" binary (#+ Writer) ("#\." monoid)]] - [collection - ["." row (#+ Row)]]]] - ["." // #_ - ["#." modifier (#+ Modifier modifiers:)] - ["#." version (#+ Version Minor Major)] - ["#." magic (#+ Magic)] - ["#." index (#+ Index)] - ["#." attribute (#+ Attribute)] - ["#." field (#+ Field)] - ["#." method (#+ Method)] - [encoding - ["#." unsigned] - ["#." name (#+ Internal)]] - ["#." constant (#+ Constant) - ["#/." pool (#+ Pool Resource)]]]) - -(type: #export #rec Class - {#magic Magic - #minor_version Minor - #major_version Major - #constant_pool Pool - #modifier (Modifier Class) - #this (Index //constant.Class) - #super (Index //constant.Class) - #interfaces (Row (Index //constant.Class)) - #fields (Row Field) - #methods (Row Method) - #attributes (Row Attribute)}) - -(modifiers: Class - ["0001" public] - ["0010" final] - ["0020" super] - ["0200" interface] - ["0400" abstract] - ["1000" synthetic] - ["2000" annotation] - ["4000" enum] - ) - -(def: #export equivalence - (Equivalence Class) - ($_ product.equivalence - //unsigned.equivalence - //unsigned.equivalence - //unsigned.equivalence - //constant/pool.equivalence - //modifier.equivalence - //index.equivalence - //index.equivalence - (row.equivalence //index.equivalence) - (row.equivalence //field.equivalence) - (row.equivalence //method.equivalence) - (row.equivalence //attribute.equivalence))) - -(def: (install_classes this super interfaces) - (-> Internal Internal (List Internal) - (Resource [(Index //constant.Class) (Index //constant.Class) (Row (Index //constant.Class))])) - (do {! //constant/pool.monad} - [@this (//constant/pool.class this) - @super (//constant/pool.class super) - @interfaces (: (Resource (Row (Index //constant.Class))) - (monad.fold ! (function (_ interface @interfaces) - (do ! - [@interface (//constant/pool.class interface)] - (wrap (row.add @interface @interfaces)))) - row.empty - interfaces))] - (wrap [@this @super @interfaces]))) - -(def: #export (class version modifier - this super interfaces - fields methods attributes) - (-> Major (Modifier Class) - Internal Internal (List Internal) - (List (Resource Field)) - (List (Resource Method)) - (Row Attribute) - (Try Class)) - (do try.monad - [[pool [@this @super @interfaces] =fields =methods] - (<| (state.run' //constant/pool.empty) - (do //constant/pool.monad - [classes (install_classes this super interfaces) - =fields (monad.seq //constant/pool.monad fields) - =methods (monad.seq //constant/pool.monad methods)] - (wrap [classes =fields =methods])))] - (wrap {#magic //magic.code - #minor_version //version.default_minor - #major_version version - #constant_pool pool - #modifier modifier - #this @this - #super @super - #interfaces @interfaces - #fields (row.from_list =fields) - #methods (row.from_list =methods) - #attributes attributes}))) - -(def: #export (writer class) - (Writer Class) - (`` ($_ binaryF\compose - (~~ (template [<writer> <slot>] - [(<writer> (get@ <slot> class))] - - [//magic.writer #magic] - [//version.writer #minor_version] - [//version.writer #major_version] - [//constant/pool.writer #constant_pool] - [//modifier.writer #modifier] - [//index.writer #this] - [//index.writer #super])) - (~~ (template [<writer> <slot>] - [((binaryF.row/16 <writer>) (get@ <slot> class))] - - [//index.writer #interfaces] - [//field.writer #fields] - [//method.writer #methods] - [//attribute.writer #attributes] - )) - ))) |