Export and calling convention annotation for lib/asn1
This commit is contained in:
@@ -64,4 +64,16 @@ typedef struct heim_octet_string heim_any_set;
|
||||
} \
|
||||
} while (0)
|
||||
|
||||
#ifdef _WIN32
|
||||
#ifndef ASN1_LIB
|
||||
#define ASN1EXP __declspec(dllimport)
|
||||
#else
|
||||
#define ASN1EXP
|
||||
#endif
|
||||
#define ASN1CALL __stdcall
|
||||
#else
|
||||
#define ASN1EXP
|
||||
#define ASN1CALL
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
@@ -228,6 +228,18 @@ init_generate (const char *filename, const char *base)
|
||||
" } \\\n"
|
||||
" } while (0)\n\n",
|
||||
headerfile);
|
||||
fputs("#ifdef _WIN32\n"
|
||||
"#ifndef ASN1_LIB\n"
|
||||
"#define ASN1EXP __declspec(dllimport)\n"
|
||||
"#else\n"
|
||||
"#define ASN1EXP\n"
|
||||
"#endif\n"
|
||||
"#define ASN1CALL __stdcall\n"
|
||||
"#else\n"
|
||||
"#define ASN1EXP\n"
|
||||
"#define ASN1CALL\n"
|
||||
"#endif\n",
|
||||
headerfile);
|
||||
fprintf (headerfile, "struct units;\n\n");
|
||||
fprintf (headerfile, "#endif\n\n");
|
||||
if (asprintf(&fn, "%s_files", base) < 0 || fn == NULL)
|
||||
@@ -340,6 +352,7 @@ generate_header_of_codefile(const char *name)
|
||||
fprintf (codefile,
|
||||
"/* Generated from %s */\n"
|
||||
"/* Do not edit */\n\n"
|
||||
"#define ASN1_LIB\n\n"
|
||||
"#include <stdio.h>\n"
|
||||
"#include <stdlib.h>\n"
|
||||
"#include <time.h>\n"
|
||||
@@ -975,6 +988,7 @@ void
|
||||
generate_type (const Symbol *s)
|
||||
{
|
||||
FILE *h;
|
||||
const char * exp;
|
||||
|
||||
if (!one_code_file)
|
||||
generate_header_of_codefile(s->gen_name);
|
||||
@@ -996,30 +1010,37 @@ generate_type (const Symbol *s)
|
||||
|
||||
/* generate prototypes */
|
||||
|
||||
if (is_export(s->name))
|
||||
if (is_export(s->name)) {
|
||||
h = headerfile;
|
||||
else
|
||||
exp = "ASN1EXP ";
|
||||
} else {
|
||||
h = privheaderfile;
|
||||
exp = "";
|
||||
}
|
||||
|
||||
fprintf (h,
|
||||
"int "
|
||||
"%sint ASN1CALL "
|
||||
"decode_%s(const unsigned char *, size_t, %s *, size_t *);\n",
|
||||
exp,
|
||||
s->gen_name, s->gen_name);
|
||||
fprintf (h,
|
||||
"int "
|
||||
"%sint ASN1CALL "
|
||||
"encode_%s(unsigned char *, size_t, const %s *, size_t *);\n",
|
||||
exp,
|
||||
s->gen_name, s->gen_name);
|
||||
fprintf (h,
|
||||
"size_t length_%s(const %s *);\n",
|
||||
"%ssize_t ASN1CALL length_%s(const %s *);\n",
|
||||
exp,
|
||||
s->gen_name, s->gen_name);
|
||||
fprintf (h,
|
||||
"int copy_%s (const %s *, %s *);\n",
|
||||
"%sint ASN1CALL copy_%s (const %s *, %s *);\n",
|
||||
exp,
|
||||
s->gen_name, s->gen_name, s->gen_name);
|
||||
fprintf (h,
|
||||
"void free_%s (%s *);\n",
|
||||
"%svoid ASN1CALL free_%s (%s *);\n",
|
||||
exp,
|
||||
s->gen_name, s->gen_name);
|
||||
|
||||
|
||||
fprintf(h, "\n\n");
|
||||
|
||||
if (!one_code_file) {
|
||||
|
@@ -231,7 +231,7 @@ generate_type_copy (const Symbol *s)
|
||||
|
||||
used_fail = 0;
|
||||
|
||||
fprintf (codefile, "int\n"
|
||||
fprintf (codefile, "int ASN1CALL\n"
|
||||
"copy_%s(const %s *from, %s *to)\n"
|
||||
"{\n"
|
||||
"memset(to, 0, sizeof(*to));\n",
|
||||
|
@@ -661,7 +661,7 @@ generate_type_decode (const Symbol *s)
|
||||
{
|
||||
int preserve = preserve_type(s->name) ? TRUE : FALSE;
|
||||
|
||||
fprintf (codefile, "int\n"
|
||||
fprintf (codefile, "int ASN1CALL\n"
|
||||
"decode_%s(const unsigned char *p,"
|
||||
" size_t len, %s *data, size_t *size)\n"
|
||||
"{\n",
|
||||
|
@@ -502,7 +502,7 @@ encode_type (const char *name, const Type *t, const char *tmpstr)
|
||||
void
|
||||
generate_type_encode (const Symbol *s)
|
||||
{
|
||||
fprintf (codefile, "int\n"
|
||||
fprintf (codefile, "int ASN1CALL\n"
|
||||
"encode_%s(unsigned char *p, size_t len,"
|
||||
" const %s *data, size_t *size)\n"
|
||||
"{\n",
|
||||
|
@@ -180,7 +180,7 @@ generate_type_free (const Symbol *s)
|
||||
{
|
||||
int preserve = preserve_type(s->name) ? TRUE : FALSE;
|
||||
|
||||
fprintf (codefile, "void\n"
|
||||
fprintf (codefile, "void ASN1CALL\n"
|
||||
"free_%s(%s *data)\n"
|
||||
"{\n",
|
||||
s->gen_name, s->gen_name);
|
||||
|
@@ -267,7 +267,7 @@ void
|
||||
generate_type_length (const Symbol *s)
|
||||
{
|
||||
fprintf (codefile,
|
||||
"size_t\n"
|
||||
"size_t ASN1CALL\n"
|
||||
"length_%s(const %s *data)\n"
|
||||
"{\n"
|
||||
"size_t ret = 0;\n",
|
||||
|
@@ -67,12 +67,12 @@ generate_type_seq (const Symbol *s)
|
||||
subname = type->subtype->symbol->gen_name;
|
||||
|
||||
fprintf (headerfile,
|
||||
"int add_%s (%s *, const %s *);\n"
|
||||
"int remove_%s (%s *, unsigned int);\n",
|
||||
"ASN1EXP int ASN1CALL add_%s (%s *, const %s *);\n"
|
||||
"ASN1EXP int ASN1CALL remove_%s (%s *, unsigned int);\n",
|
||||
s->gen_name, s->gen_name, subname,
|
||||
s->gen_name, s->gen_name);
|
||||
|
||||
fprintf (codefile, "int\n"
|
||||
fprintf (codefile, "int ASN1CALL\n"
|
||||
"add_%s(%s *data, const %s *element)\n"
|
||||
"{\n",
|
||||
s->gen_name, s->gen_name, subname);
|
||||
@@ -93,7 +93,7 @@ generate_type_seq (const Symbol *s)
|
||||
|
||||
fprintf (codefile, "}\n\n");
|
||||
|
||||
fprintf (codefile, "int\n"
|
||||
fprintf (codefile, "int ASN1CALL\n"
|
||||
"remove_%s(%s *data, unsigned int element)\n"
|
||||
"{\n",
|
||||
s->gen_name, s->gen_name);
|
||||
|
Reference in New Issue
Block a user