LINUX.ORG.RU

История изменений

Исправление AntonI, (текущая версия) :

Вот пример. В доках пишется (это .tex)

Модуль myvec предоставляет в C++ и Python функцию vec(x,y,z,...) создающие экземпляры класса Vec для которых традиционно перегружены операции сложения, вычитания, скалярного умножения и умножения на число слева и справа:
%@> vec0.cpp 
%#include "myvec.hpp"
%using namespace mylib;
%int main(){
%@> vec0.py
%@(vec0.py) from myvec import *
\begin{verbatim}
vec(1,2,3)+vec(4,5,6) --> vec(5,7,9)
vec(1,2,3)-vec(4,5,6) --> vec(-3,-3,-3)
vec(1,2,3)*vec(4,5,6) --> 32
vec(1,2,3)*2 --> vec(2,4,6)
2*vec(1,2,3) --> vec(2,4,6)
\end{verbatim}
%@(vec0.cpp) }
%@. *

После прогона утилитой mytest на выходе получаются файлы vec0.py и vec0.cpp которые она же и собирает/запускает.

vec0.py:

import mytest
from myvec import *
mytest.check((vec(1,2,3)+vec(4,5,6)), (vec(5,7,9)))
mytest.check((vec(1,2,3)-vec(4,5,6)), (vec(-3,-3,-3)))
mytest.check((vec(1,2,3)*vec(4,5,6)), (32))
mytest.check((vec(1,2,3)*2), (vec(2,4,6)))
mytest.check((2*vec(1,2,3)), (vec(2,4,6)))

Вот надо еще подумать как схлопнуть преамбулу в vec0.cpp, ну в принципе она же где то будет писаться выше по тексту - надо ее запомнить и брать оттуда. Ну и закрывающая скобка } выглядит убого, но это тоже борется.

Исправление AntonI, :

Вот пример. В доках пишется (это .tex)

Модуль myvec предоставляет в C++ и Python функцию vec(x,y,z,...) создающие экземпляры класса Vec для которых традиционно перегружены операции сложения, вычитания, скалярного умножения и умножения на число слева и справа:
%@> vec0.cpp 
%#include "myvec.hpp"
%using namespace mylib;
%int main(){
%@> vec0.py
%@(vec0.py) from myvec import *
\begin{verbatim}
vec(1,2,3)+vec(4,5,6) --> vec(5,7,9)
vec(1,2,3)-vec(4,5,6) --> vec(-3,-3,-3)
vec(1,2,3)*vec(4,5,6) --> 32
vec(1,2,3)*2 --> vec(2,4,6)
2*vec(1,2,3) --> vec(2,4,6)
\end{verbatim}
%@(vec0.cpp) }
%@. *

После прогона утилитой mytest на выходе получаются файлы vec0.py и vec0.cpp которые она же и собирает/запускает.

vec0.py:

import mytest
from mylib import *
mytest.check((vec(1,2,3)+vec(4,5,6)), (vec(5,7,9)))
mytest.check((vec(1,2,3)-vec(4,5,6)), (vec(-3,-3,-3)))
mytest.check((vec(1,2,3)*vec(4,5,6)), (32))
mytest.check((vec(1,2,3)*2), (vec(2,4,6)))
mytest.check((2*vec(1,2,3)), (vec(2,4,6)))

Вот надо еще подумать как схлопнуть преамбулу в vec0.cpp, ну в принципе она же где то будет писаться выше по тексту - надо ее запомнить и брать оттуда. Ну и закрывающая скобка } выглядит убого, но это тоже борется.

Исходная версия AntonI, :

Вот пример. В доках пишется (это .tex)

Модуль myvec предоставляет в C++ и Python функцию vec(x,y,z,...) создающие экземпляры класса Vec для которых традиционно перегружены операции сложения, вычитания, скалярного умножения и умножения на число слева и справа:
%@> vec0.cpp 
%#include "mylib.hpp"
%using namespace mylib;
%int main(){
%@> vec0.py
%@(vec0.py) from mylib import *
\begin{verbatim}
vec(1,2,3)+vec(4,5,6) --> vec(5,7,9)
vec(1,2,3)-vec(4,5,6) --> vec(-3,-3,-3)
vec(1,2,3)*vec(4,5,6) --> 32
vec(1,2,3)*2 --> vec(2,4,6)
2*vec(1,2,3) --> vec(2,4,6)
\end{verbatim}
%@(vec0.cpp) }
%@. *

После прогона утилитой mytest на выходе получаются файлы vec0.py и vec0.cpp которые она же и собирает/запускает.

vec0.py:

import mytest
from mylib import *
mytest.check((vec(1,2,3)+vec(4,5,6)), (vec(5,7,9)))
mytest.check((vec(1,2,3)-vec(4,5,6)), (vec(-3,-3,-3)))
mytest.check((vec(1,2,3)*vec(4,5,6)), (32))
mytest.check((vec(1,2,3)*2), (vec(2,4,6)))
mytest.check((2*vec(1,2,3)), (vec(2,4,6)))

Вот надо еще подумать как схлопнуть преамбулу в vec0.cpp, ну в принципе она же где то будет писаться выше по тексту - надо ее запомнить и брать оттуда. Ну и закрывающая скобка } выглядит убого, но это тоже борется.