mirror of
https://github.com/opencv/opencv.git
synced 2025-06-12 20:42:53 +08:00
objc: rework headers import
- 'AdditionalImports' can be removed from misc/objc/gen_dict.json - avoid using of legacy 'opencv.hpp'
This commit is contained in:
parent
a7c150ec66
commit
cfbdbffcad
@ -7,7 +7,7 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
#import <opencv2/opencv.hpp>
|
#import <opencv2/core.hpp>
|
||||||
#else
|
#else
|
||||||
#define CV_EXPORTS
|
#define CV_EXPORTS
|
||||||
#endif
|
#endif
|
||||||
|
@ -5,7 +5,7 @@
|
|||||||
//
|
//
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
#import "opencv.hpp"
|
#import "opencv2/core.hpp"
|
||||||
#else
|
#else
|
||||||
#define CV_EXPORTS
|
#define CV_EXPORTS
|
||||||
#endif
|
#endif
|
||||||
|
@ -7,7 +7,7 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
#import "opencv.hpp"
|
#import "opencv2/core.hpp"
|
||||||
#else
|
#else
|
||||||
#define CV_EXPORTS
|
#define CV_EXPORTS
|
||||||
#endif
|
#endif
|
||||||
|
@ -7,7 +7,7 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
#import "opencv.hpp"
|
#import "opencv2/core.hpp"
|
||||||
#else
|
#else
|
||||||
#define CV_EXPORTS
|
#define CV_EXPORTS
|
||||||
#endif
|
#endif
|
||||||
|
@ -7,7 +7,7 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
#import "opencv.hpp"
|
#import "opencv2/core.hpp"
|
||||||
#else
|
#else
|
||||||
#define CV_EXPORTS
|
#define CV_EXPORTS
|
||||||
#endif
|
#endif
|
||||||
|
@ -7,7 +7,7 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
#import "opencv.hpp"
|
#import "opencv2/core.hpp"
|
||||||
#else
|
#else
|
||||||
#define CV_EXPORTS
|
#define CV_EXPORTS
|
||||||
#endif
|
#endif
|
||||||
|
@ -7,7 +7,7 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
#import "opencv.hpp"
|
#import "opencv2/core.hpp"
|
||||||
#else
|
#else
|
||||||
#define CV_EXPORTS
|
#define CV_EXPORTS
|
||||||
#endif
|
#endif
|
||||||
|
@ -7,7 +7,7 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
#import "opencv.hpp"
|
#import "opencv2/core.hpp"
|
||||||
#else
|
#else
|
||||||
#define CV_EXPORTS
|
#define CV_EXPORTS
|
||||||
#endif
|
#endif
|
||||||
|
@ -7,7 +7,7 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
#import "opencv.hpp"
|
#import "opencv2/core.hpp"
|
||||||
#else
|
#else
|
||||||
#define CV_EXPORTS
|
#define CV_EXPORTS
|
||||||
#endif
|
#endif
|
||||||
|
@ -7,7 +7,7 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
#import "opencv.hpp"
|
#import "opencv2/core.hpp"
|
||||||
#else
|
#else
|
||||||
#define CV_EXPORTS
|
#define CV_EXPORTS
|
||||||
#endif
|
#endif
|
||||||
|
@ -7,7 +7,7 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
#import "opencv.hpp"
|
#import "opencv2/core.hpp"
|
||||||
#else
|
#else
|
||||||
#define CV_EXPORTS
|
#define CV_EXPORTS
|
||||||
#endif
|
#endif
|
||||||
|
@ -7,7 +7,7 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
#import "opencv.hpp"
|
#import "opencv2/core.hpp"
|
||||||
#else
|
#else
|
||||||
#define CV_EXPORTS
|
#define CV_EXPORTS
|
||||||
#endif
|
#endif
|
||||||
|
@ -7,7 +7,7 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
#import "opencv.hpp"
|
#import "opencv2/core.hpp"
|
||||||
#else
|
#else
|
||||||
#define CV_EXPORTS
|
#define CV_EXPORTS
|
||||||
#endif
|
#endif
|
||||||
|
@ -7,7 +7,7 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
#import "opencv.hpp"
|
#import "opencv2/core.hpp"
|
||||||
#else
|
#else
|
||||||
#define CV_EXPORTS
|
#define CV_EXPORTS
|
||||||
#endif
|
#endif
|
||||||
|
@ -7,7 +7,7 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
#import "opencv.hpp"
|
#import "opencv2/core.hpp"
|
||||||
#else
|
#else
|
||||||
#define CV_EXPORTS
|
#define CV_EXPORTS
|
||||||
#endif
|
#endif
|
||||||
|
@ -7,7 +7,7 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
#import "opencv.hpp"
|
#import "opencv2/core.hpp"
|
||||||
#else
|
#else
|
||||||
#define CV_EXPORTS
|
#define CV_EXPORTS
|
||||||
#endif
|
#endif
|
||||||
|
@ -7,7 +7,7 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
#import "opencv.hpp"
|
#import "opencv2/core.hpp"
|
||||||
#else
|
#else
|
||||||
#define CV_EXPORTS
|
#define CV_EXPORTS
|
||||||
#endif
|
#endif
|
||||||
|
@ -7,7 +7,7 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
#import "opencv.hpp"
|
#import "opencv2/core.hpp"
|
||||||
#else
|
#else
|
||||||
#define CV_EXPORTS
|
#define CV_EXPORTS
|
||||||
#endif
|
#endif
|
||||||
|
@ -7,7 +7,7 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
#import "opencv.hpp"
|
#import "opencv2/core.hpp"
|
||||||
#else
|
#else
|
||||||
#define CV_EXPORTS
|
#define CV_EXPORTS
|
||||||
#endif
|
#endif
|
||||||
|
@ -7,7 +7,7 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
#import "opencv.hpp"
|
#import "opencv2/core.hpp"
|
||||||
#else
|
#else
|
||||||
#define CV_EXPORTS
|
#define CV_EXPORTS
|
||||||
#endif
|
#endif
|
||||||
|
@ -7,7 +7,7 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
#import "opencv.hpp"
|
#import "opencv2/core.hpp"
|
||||||
#else
|
#else
|
||||||
#define CV_EXPORTS
|
#define CV_EXPORTS
|
||||||
#endif
|
#endif
|
||||||
|
@ -7,7 +7,7 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
#import "opencv.hpp"
|
#import "opencv2/core.hpp"
|
||||||
#else
|
#else
|
||||||
#define CV_EXPORTS
|
#define CV_EXPORTS
|
||||||
#endif
|
#endif
|
||||||
|
@ -7,7 +7,7 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
#import "opencv.hpp"
|
#import "opencv2/core.hpp"
|
||||||
#else
|
#else
|
||||||
#define CV_EXPORTS
|
#define CV_EXPORTS
|
||||||
#endif
|
#endif
|
||||||
|
@ -7,7 +7,7 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
#import "opencv.hpp"
|
#import "opencv2/core.hpp"
|
||||||
#else
|
#else
|
||||||
#define CV_EXPORTS
|
#define CV_EXPORTS
|
||||||
#endif
|
#endif
|
||||||
|
@ -7,7 +7,7 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
#import "opencv.hpp"
|
#import "opencv2/core.hpp"
|
||||||
#else
|
#else
|
||||||
#define CV_EXPORTS
|
#define CV_EXPORTS
|
||||||
#endif
|
#endif
|
||||||
|
@ -7,7 +7,7 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
#import "opencv.hpp"
|
#import "opencv2/core.hpp"
|
||||||
#else
|
#else
|
||||||
#define CV_EXPORTS
|
#define CV_EXPORTS
|
||||||
#endif
|
#endif
|
||||||
|
@ -7,7 +7,7 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
#import "opencv.hpp"
|
#import "opencv2/core.hpp"
|
||||||
#else
|
#else
|
||||||
#define CV_EXPORTS
|
#define CV_EXPORTS
|
||||||
#endif
|
#endif
|
||||||
|
@ -7,14 +7,14 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
#import "opencv.hpp"
|
#import "opencv2/core.hpp"
|
||||||
#else
|
#else
|
||||||
#define CV_EXPORTS
|
#define CV_EXPORTS
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#import "Mat.h"
|
||||||
#import <Foundation/Foundation.h>
|
#import <Foundation/Foundation.h>
|
||||||
#import <UIKit/UIKit.h>
|
#import <UIKit/UIKit.h>
|
||||||
#import "Mat.h"
|
|
||||||
|
|
||||||
NS_ASSUME_NONNULL_BEGIN
|
NS_ASSUME_NONNULL_BEGIN
|
||||||
|
|
||||||
|
@ -7,14 +7,14 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
#import "opencv.hpp"
|
#import "opencv2/core.hpp"
|
||||||
#else
|
#else
|
||||||
#define CV_EXPORTS
|
#define CV_EXPORTS
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#import "Mat.h"
|
||||||
#import <Foundation/Foundation.h>
|
#import <Foundation/Foundation.h>
|
||||||
#import <AppKit/AppKit.h>
|
#import <AppKit/AppKit.h>
|
||||||
#import "Mat.h"
|
|
||||||
|
|
||||||
NS_ASSUME_NONNULL_BEGIN
|
NS_ASSUME_NONNULL_BEGIN
|
||||||
|
|
||||||
|
@ -7,7 +7,7 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
#import "opencv.hpp"
|
#import "opencv2/core.hpp"
|
||||||
#else
|
#else
|
||||||
#define CV_EXPORTS
|
#define CV_EXPORTS
|
||||||
#endif
|
#endif
|
||||||
|
@ -104,6 +104,15 @@ def mkdir_p(path):
|
|||||||
else:
|
else:
|
||||||
raise
|
raise
|
||||||
|
|
||||||
|
def header_import(hdr):
|
||||||
|
""" converts absolute header path to import parameter """
|
||||||
|
pos = hdr.find('/include/')
|
||||||
|
hdr = hdr[pos+9 if pos >= 0 else 0:]
|
||||||
|
#pos = hdr.find('opencv2/')
|
||||||
|
#hdr = hdr[pos+8 if pos >= 0 else 0:]
|
||||||
|
return hdr
|
||||||
|
|
||||||
|
|
||||||
T_OBJC_CLASS_HEADER = read_contents(os.path.join(SCRIPT_DIR, 'templates/objc_class_header.template'))
|
T_OBJC_CLASS_HEADER = read_contents(os.path.join(SCRIPT_DIR, 'templates/objc_class_header.template'))
|
||||||
T_OBJC_CLASS_BODY = read_contents(os.path.join(SCRIPT_DIR, 'templates/objc_class_body.template'))
|
T_OBJC_CLASS_BODY = read_contents(os.path.join(SCRIPT_DIR, 'templates/objc_class_body.template'))
|
||||||
T_OBJC_MODULE_HEADER = read_contents(os.path.join(SCRIPT_DIR, 'templates/objc_module_header.template'))
|
T_OBJC_MODULE_HEADER = read_contents(os.path.join(SCRIPT_DIR, 'templates/objc_module_header.template'))
|
||||||
@ -693,17 +702,17 @@ class ObjectiveCWrapperGenerator(object):
|
|||||||
classinfo = ClassInfo(decl, namespaces=self.namespaces)
|
classinfo = ClassInfo(decl, namespaces=self.namespaces)
|
||||||
if classinfo.name in class_ignore_list:
|
if classinfo.name in class_ignore_list:
|
||||||
logging.info('ignored: %s', classinfo)
|
logging.info('ignored: %s', classinfo)
|
||||||
return
|
return None
|
||||||
if classinfo.name != self.Module:
|
if classinfo.name != self.Module:
|
||||||
self.classes[self.Module].member_classes.append(classinfo.objc_name)
|
self.classes[self.Module].member_classes.append(classinfo.objc_name)
|
||||||
name = classinfo.cname
|
name = classinfo.cname
|
||||||
if self.isWrapped(name) and not classinfo.base:
|
if self.isWrapped(name) and not classinfo.base:
|
||||||
logging.warning('duplicated: %s', classinfo)
|
logging.warning('duplicated: %s', classinfo)
|
||||||
return
|
return None
|
||||||
self.classes[name] = classinfo
|
self.classes[name] = classinfo
|
||||||
if name in type_dict and not classinfo.base:
|
if name in type_dict and not classinfo.base:
|
||||||
logging.warning('duplicated: %s', classinfo)
|
logging.warning('duplicated: %s', classinfo)
|
||||||
return
|
return None
|
||||||
if name != self.Module:
|
if name != self.Module:
|
||||||
type_dict.setdefault(name, {}).update(
|
type_dict.setdefault(name, {}).update(
|
||||||
{ "objc_type" : classinfo.objc_name + "*",
|
{ "objc_type" : classinfo.objc_name + "*",
|
||||||
@ -731,6 +740,7 @@ class ObjectiveCWrapperGenerator(object):
|
|||||||
)
|
)
|
||||||
|
|
||||||
logging.info('ok: class %s, name: %s, base: %s', classinfo, name, classinfo.base)
|
logging.info('ok: class %s, name: %s, base: %s', classinfo, name, classinfo.base)
|
||||||
|
return classinfo
|
||||||
|
|
||||||
def add_const(self, decl, scope=None, enumType=None): # [ "const cname", val, [], [] ]
|
def add_const(self, decl, scope=None, enumType=None): # [ "const cname", val, [], [] ]
|
||||||
constinfo = ConstInfo(decl, namespaces=self.namespaces, enumType=enumType)
|
constinfo = ConstInfo(decl, namespaces=self.namespaces, enumType=enumType)
|
||||||
@ -837,27 +847,30 @@ class ObjectiveCWrapperGenerator(object):
|
|||||||
# TODO: support UMat versions of declarations (implement UMat-wrapper for Java)
|
# TODO: support UMat versions of declarations (implement UMat-wrapper for Java)
|
||||||
parser = hdr_parser.CppHeaderParser(generate_umat_decls=False)
|
parser = hdr_parser.CppHeaderParser(generate_umat_decls=False)
|
||||||
|
|
||||||
self.add_class( ['class ' + self.Module, '', [], []]) # [ 'class/struct cname', ':bases', [modlist] [props] ]
|
module_ci = self.add_class( ['class ' + self.Module, '', [], []]) # [ 'class/struct cname', ':bases', [modlist] [props] ]
|
||||||
|
module_ci.header_import = module + '.hpp'
|
||||||
|
|
||||||
# scan the headers and build more descriptive maps of classes, consts, functions
|
# scan the headers and build more descriptive maps of classes, consts, functions
|
||||||
includes = []
|
includes = []
|
||||||
for hdr in common_headers:
|
for hdr in common_headers:
|
||||||
logging.info("\n===== Common header : %s =====", hdr)
|
logging.info("\n===== Common header : %s =====", hdr)
|
||||||
includes.append('#include "' + hdr + '"')
|
includes.append(header_import(hdr))
|
||||||
for hdr in srcfiles:
|
for hdr in srcfiles:
|
||||||
decls = parser.parse(hdr)
|
decls = parser.parse(hdr)
|
||||||
self.namespaces = parser.namespaces
|
self.namespaces = parser.namespaces
|
||||||
logging.info("\n\n===== Header: %s =====", hdr)
|
logging.info("\n\n===== Header: %s =====", hdr)
|
||||||
logging.info("Namespaces: %s", parser.namespaces)
|
logging.info("Namespaces: %s", parser.namespaces)
|
||||||
if decls:
|
if decls:
|
||||||
includes.append('#include "' + hdr + '"')
|
includes.append(header_import(hdr))
|
||||||
else:
|
else:
|
||||||
logging.info("Ignore header: %s", hdr)
|
logging.info("Ignore header: %s", hdr)
|
||||||
for decl in decls:
|
for decl in decls:
|
||||||
logging.info("\n--- Incoming ---\n%s", pformat(decl[:5], 4)) # without docstring
|
logging.info("\n--- Incoming ---\n%s", pformat(decl[:5], 4)) # without docstring
|
||||||
name = decl[0]
|
name = decl[0]
|
||||||
if name.startswith("struct") or name.startswith("class"):
|
if name.startswith("struct") or name.startswith("class"):
|
||||||
self.add_class(decl)
|
ci = self.add_class(decl)
|
||||||
|
if ci:
|
||||||
|
ci.header_import = header_import(hdr)
|
||||||
elif name.startswith("const"):
|
elif name.startswith("const"):
|
||||||
self.add_const(decl)
|
self.add_const(decl)
|
||||||
elif name.startswith("enum"):
|
elif name.startswith("enum"):
|
||||||
@ -1190,13 +1203,26 @@ $unrefined_call$epilogue$ret
|
|||||||
|
|
||||||
def gen_class(self, ci, module, extension_implementations, extension_signatures):
|
def gen_class(self, ci, module, extension_implementations, extension_signatures):
|
||||||
logging.info("%s", ci)
|
logging.info("%s", ci)
|
||||||
if module in AdditionalImports and (ci.name in AdditionalImports[module] or "*" in AdditionalImports[module]):
|
additional_imports = []
|
||||||
additional_imports = []
|
if module in AdditionalImports:
|
||||||
if "*" in AdditionalImports[module]:
|
if "*" in AdditionalImports[module]:
|
||||||
additional_imports += AdditionalImports[module]["*"]
|
additional_imports += AdditionalImports[module]["*"]
|
||||||
if ci.name in AdditionalImports[module]:
|
if ci.name in AdditionalImports[module]:
|
||||||
additional_imports += AdditionalImports[module][ci.name]
|
additional_imports += AdditionalImports[module][ci.name]
|
||||||
ci.additionalImports.write("\n".join(["#import %s" % h for h in additional_imports]))
|
if hasattr(ci, 'header_import'):
|
||||||
|
h = '"{}"'.format(ci.header_import)
|
||||||
|
if not h in additional_imports:
|
||||||
|
additional_imports.append(h)
|
||||||
|
|
||||||
|
h = '"{}.hpp"'.format(module)
|
||||||
|
if h in additional_imports:
|
||||||
|
additional_imports.remove(h)
|
||||||
|
h = '"opencv2/{}.hpp"'.format(module)
|
||||||
|
if not h in additional_imports:
|
||||||
|
additional_imports.insert(0, h)
|
||||||
|
|
||||||
|
if additional_imports:
|
||||||
|
ci.additionalImports.write('\n'.join(['#import %s' % h for h in additional_imports]))
|
||||||
|
|
||||||
# constants
|
# constants
|
||||||
wrote_consts_pragma = False
|
wrote_consts_pragma = False
|
||||||
|
@ -4,7 +4,7 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
#import "opencv.hpp"
|
//#import "opencv.hpp"
|
||||||
$additionalImports
|
$additionalImports
|
||||||
#else
|
#else
|
||||||
#define CV_EXPORTS
|
#define CV_EXPORTS
|
||||||
|
@ -4,7 +4,7 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
#import "opencv.hpp"
|
//#import "opencv.hpp"
|
||||||
$additionalImports
|
$additionalImports
|
||||||
#else
|
#else
|
||||||
#define CV_EXPORTS
|
#define CV_EXPORTS
|
||||||
|
Loading…
Reference in New Issue
Block a user