919 fields[TypeFunc::Parms+0] = TypeInt::INT; // crc result |
919 fields[TypeFunc::Parms+0] = TypeInt::INT; // crc result |
920 const TypeTuple* range = TypeTuple::make(TypeFunc::Parms+1, fields); |
920 const TypeTuple* range = TypeTuple::make(TypeFunc::Parms+1, fields); |
921 return TypeFunc::make(domain, range); |
921 return TypeFunc::make(domain, range); |
922 } |
922 } |
923 |
923 |
|
924 /** |
|
925 * int updateBytesAdler32(int adler, bytes* b, int off, int len) |
|
926 */ |
|
927 const TypeFunc* OptoRuntime::updateBytesAdler32_Type() { |
|
928 // create input type (domain) |
|
929 int num_args = 3; |
|
930 int argcnt = num_args; |
|
931 const Type** fields = TypeTuple::fields(argcnt); |
|
932 int argp = TypeFunc::Parms; |
|
933 fields[argp++] = TypeInt::INT; // crc |
|
934 fields[argp++] = TypePtr::NOTNULL; // src + offset |
|
935 fields[argp++] = TypeInt::INT; // len |
|
936 assert(argp == TypeFunc::Parms+argcnt, "correct decoding"); |
|
937 const TypeTuple* domain = TypeTuple::make(TypeFunc::Parms+argcnt, fields); |
|
938 |
|
939 // result type needed |
|
940 fields = TypeTuple::fields(1); |
|
941 fields[TypeFunc::Parms+0] = TypeInt::INT; // crc result |
|
942 const TypeTuple* range = TypeTuple::make(TypeFunc::Parms+1, fields); |
|
943 return TypeFunc::make(domain, range); |
|
944 } |
|
945 |
924 // for cipherBlockChaining calls of aescrypt encrypt/decrypt, four pointers and a length, returning int |
946 // for cipherBlockChaining calls of aescrypt encrypt/decrypt, four pointers and a length, returning int |
925 const TypeFunc* OptoRuntime::cipherBlockChaining_aescrypt_Type() { |
947 const TypeFunc* OptoRuntime::cipherBlockChaining_aescrypt_Type() { |
926 // create input type (domain) |
948 // create input type (domain) |
927 int num_args = 5; |
949 int num_args = 5; |
928 if (Matcher::pass_original_key_for_aes()) { |
950 if (Matcher::pass_original_key_for_aes()) { |