§
    ƒnóc›  ã                  óZ   — d dl mZ d dlmZ d dlZdZdZdZdZdZ	d	Z
 G d
„ de¦  «        ZdS )é    )Úannotations)Ú
SampleImplNa  #include <iostream>

#define PROJECT_NAME "{project_name}"

int main(int argc, char **argv) {{
    if(argc != 1) {{
        std::cout << argv[0] <<  "takes no arguments.\n";
        return 1;
    }}
    std::cout << "This is project " << PROJECT_NAME << ".\n";
    return 0;
}}
zàproject('{project_name}', 'cpp',
  version : '{version}',
  default_options : ['warning_level=3',
                     'cpp_std=c++14'])

exe = executable('{exe_name}', '{source_name}',
  install : true)

test('basic', exe)
aý  #pragma once
#if defined _WIN32 || defined __CYGWIN__
  #ifdef BUILDING_{utoken}
    #define {utoken}_PUBLIC __declspec(dllexport)
  #else
    #define {utoken}_PUBLIC __declspec(dllimport)
  #endif
#else
  #ifdef BUILDING_{utoken}
      #define {utoken}_PUBLIC __attribute__ ((visibility ("default")))
  #else
      #define {utoken}_PUBLIC
  #endif
#endif

namespace {namespace} {{

class {utoken}_PUBLIC {class_name} {{

public:
  {class_name}();
  int get_number() const;

private:

  int number;

}};

}}

z¨#include <{header_file}>

namespace {namespace} {{

{class_name}::{class_name}() {{
    number = 6;
}}

int {class_name}::get_number() const {{
  return number;
}}

}}
zý#include <{header_file}>
#include <iostream>

int main(int argc, char **argv) {{
    if(argc != 1) {{
        std::cout << argv[0] << " takes no arguments.\n";
        return 1;
    }}
    {namespace}::{class_name} c;
    return c.get_number() != 6;
}}
aê  project('{project_name}', 'cpp',
  version : '{version}',
  default_options : ['warning_level=3', 'cpp_std=c++14'])

# These arguments are only used to build the shared library
# not the executables that use the library.
lib_args = ['-DBUILDING_{utoken}']

shlib = shared_library('{lib_name}', '{source_file}',
  install : true,
  cpp_args : lib_args,
  gnu_symbol_visibility : 'hidden',
)

test_exe = executable('{test_exe_name}', '{test_source_file}',
  link_with : shlib)
test('{test_name}', test_exe)

# Make this library usable as a Meson subproject.
{ltoken}_dep = declare_dependency(
  include_directories: include_directories('.'),
  link_with : shlib)

# Make this library usable from the system's
# package manager.
install_headers('{header_file}', subdir : '{header_dir}')

pkg_mod = import('pkgconfig')
pkg_mod.generate(
  name : '{project_name}',
  filebase : '{ltoken}',
  description : 'Meson sample project.',
  subdirs : '{header_dir}',
  libraries : shlib,
  version : '{version}',
)
c                  ó.   ‡ — e Zd Zˆ fd„Zdd„Zdd„Zˆ xZS )Ú
CppProjectc                óx   •— t          ¦   «                              ¦   «          |j        | _        |j        | _        d S )N)ÚsuperÚ__init__ÚnameÚversion)ÚselfÚoptionsÚ	__class__s     €úC/usr/lib/python3/dist-packages/mesonbuild/templates/cpptemplates.pyr	   zCppProject.__init__’   s/   ø€ Ý‰Œ×ÒÑÔÐØ”LˆŒ	Ø”ˆŒˆˆó    ÚreturnÚNonec                ó†  — t          j        dd| j                             ¦   «         ¦  «        }|dz   }t	          |dd¬¦  «                             t                               | j        ¬¦  «        ¦  «         t	          ddd¬¦  «                             t                               | j        ||| j	        ¬	¦  «        ¦  «         d S )
Nú	[^a-z0-9]Ú_ú.cppÚwúutf-8©Úencoding)Úproject_nameúmeson.build)r   Úexe_nameÚsource_namer   )
ÚreÚsubr
   ÚlowerÚopenÚwriteÚhello_cpp_templateÚformatÚhello_cpp_meson_templater   )r   Úlowercase_tokenr   s      r   Úcreate_executablezCppProject.create_executable—   sÃ   € Ýœ& ¨s°D´I·O²OÑ4EÔ4EÑFÔFˆØ%¨Ñ.ˆÝˆ[˜#¨Ð0Ñ0Ô0×6Ò6Õ7I×7PÒ7PÐ^bÔ^gÐ7PÑ7hÔ7hÑiÔiÐiÝˆ]˜C¨'Ð2Ñ2Ô2×8Ò8Ý$×+Ò+¸¼Ø5DØ8CØ48´Lð ,ñ Bô Bñ	Cô 	Cð 	Cð 	Cð 	Cr   c                ó®  — t          j        dd| j                             ¦   «         ¦  «        }|                     ¦   «         }|d         |dd …         z   }|dz   }|}|dz   }|dz   }|dz   }|||||||||| j        ||| j        d	œ}	t          |d
d¬¦  «                             t          j	        di |	¤Ž¦  «         t          |d
d¬¦  «                             t          j	        di |	¤Ž¦  «         t          |d
d¬¦  «                             t          j	        di |	¤Ž¦  «         t          dd
d¬¦  «                             t          j	        di |	¤Ž¦  «         d S )Nr   r   r   é   Ú_testz.hppr   z	_test.cpp)ÚutokenÚltokenÚ
header_dirÚ
class_nameÚ	namespaceÚheader_fileÚsource_fileÚtest_source_fileÚtest_exe_namer   Úlib_nameÚ	test_namer   r   r   r   r   © )r   r    r
   r!   Úupperr   r"   r#   Úlib_hpp_templater%   Úlib_cpp_templateÚlib_cpp_test_templateÚlib_cpp_meson_template)
r   r'   Úuppercase_tokenr/   r4   r0   Úlib_hpp_nameÚlib_cpp_nameÚtest_cpp_nameÚkwargss
             r   Úcreate_libraryzCppProject.create_library¡   sŽ  € Ýœ& ¨s°D´I·O²OÑ4EÔ4EÑFÔFˆØ)×/Ò/Ñ1Ô1ˆØ$ QÔ'¨/¸!¸"¸"Ô*=Ñ=ˆ
Ø'¨'Ñ1ˆØ#ˆ	Ø&¨Ñ/ˆØ&¨Ñ/ˆØ'¨+Ñ5ˆØ+Ø+Ø /Ø *Ø(Ø!-Ø!-Ø&3Ø#0Ø"&¤)Ø-Ø.Ø!œ\ðð ˆõ 	ˆ\˜3¨Ð1Ñ1Ô1×7Ò7Õ8HÔ8OÐ8YÐ8YÐRXÐ8YÐ8YÑZÔZÐZÝˆ\˜3¨Ð1Ñ1Ô1×7Ò7Õ8HÔ8OÐ8YÐ8YÐRXÐ8YÐ8YÑZÔZÐZÝˆ]˜C¨'Ð2Ñ2Ô2×8Ò8Õ9NÔ9UÐ9_Ð9_ÐX^Ð9_Ð9_Ñ`Ô`Ð`Ýˆ]˜C¨'Ð2Ñ2Ô2×8Ò8Õ9OÔ9VÐ9`Ð9`ÐY_Ð9`Ð9`ÑaÔaÐaÐaÐar   )r   r   )Ú__name__Ú
__module__Ú__qualname__r	   r(   rB   Ú__classcell__)r   s   @r   r   r   ‘   sl   ø€ € € € € ð'ð 'ð 'ð 'ð 'ð
Cð Cð Cð Cðbð bð bð bð bð bð bð br   r   )Ú
__future__r   Úmesonbuild.templates.sampleimplr   r   r$   r&   r9   r:   r;   r<   r   r7   r   r   ú<module>rI      s¤   ðð #Ð "Ð "Ð "Ð "Ð "à 6Ð 6Ð 6Ð 6Ð 6Ð 6Ø 	€	€	€	ðÐ ð	Ð ðÐ ðBÐ ðÐ ð$Ð ðN*bð *bð *bð *bð *b�ñ *bô *bð *bð *bð *br   