LINUX.ORG.RU

Сообщения zanac1

 

Как убрать прямое обращение к переменной в шаблоном классе.

Форум — Development

Есть в библиотеке такой класс, TAutoClose, освобождающий ресурсы своего члена класса, вызывая его метод Close(), при выходе из области видимости. При этом глаза мозолит использование iObj:

TAutoClose<RApaLsSession> cmd;
cmd.iObj.Connect();
cmd.iObj.Send();

Хочу так:

cmd.Connect();
cmd.Send();

Добавил реализацию оператора &(видел подобный фокус с оператором '*' для умных указателей), всё равно компилятор говорит, что не видит функции:

T& operator&() {
return iObj;}

Вот общий вид этой группы классов: TAutoClose освобождает ресурсы группы классов вида:

class RExample:
{
   int handle;
public:
   void Close() {}
}

И сам класс:

template <class T>
class TAutoClose
/**
@publishedAll

Automatically calls Close() on an object when that object goes out of scope.
The behaviour takes advantage of the fact that the compiler automatically
destroys objects that go out of scope.
*/
    {
public:
    inline ~TAutoClose();
private:
    static void Close(TAny *aObj);
public:
    /**
    An instance of the template class.
    */
    T iObj;
    };

// Class TAutoClose
template <class T>
inline TAutoClose<T>::~TAutoClose()
/**
Destructor.
The implementation calls Close() on iObj, the instance of the template class.
*/
    {iObj.Close();}
 
template <class T>
void TAutoClose<T>::Close(TAny *aObj)
    {((T *)aObj)->Close();}

 

zanac1 ()

В скрипте функции выполняются не по очереди, а вразнобой.

Форум — Development

Функции в скрипте python выполняются в произвольном порядке. Я ожидаю, что функции выполняются друг за другом. Сам скрипт - это набор функций.

Вся логика находится в файле ‘init.py’(знаки подчеркивания в начале и конце имени файла режет парсер сайта).

Среди них две функции(модули piper и build_apps) запускают многопоточную сборку друг за другом, может из-за этого проблемы.

Исходный код - GitHub.

Ожидаемый лог:

  • Engine *.mmp done!(собираются статические библиотеки)
  • Target ScummVM?.mmp done!(собираются exe)
  • pkg: *.pkg(собираются установочные файлы)

Лог сборки:

Queue size: 92  
Thread count: 6
Queue size: 8
Thread count: 6
pkg: Neverhood.pkg
pkg: Neverhood_cmdline.pkg
Target ScummVM5.mmp done!
Target Neverhoode.mmp done!
 Target ScummVM1.mmp done!
Engine access.mmp done!
Engine adl.mmp done!Engine agi.mmp done!

Engine avalanche.mmp done!
Target ScummVM6.mmp done!
Target ScummVM2.mmp done!
Target ScummVM3.mmp done!
Engine buried.mmp done!
Target ScummVM7.mmp done!
Engine asylum.mmp done!
Target ScummVM4.mmp done!
Engine cge.mmp done!
Engine cge2.mmp done!
Engine chewy.mmp done!
Engine composer.mmp done!
Engine cine.mmp done!
Engine cryo.mmp done!
Далее много «Engine *.mmp done!»

Чяднт? P.S. Python 2.

 ,

zanac1 ()

В скрипте несколько вызовов datetime.now() выдает одинаковое время

Форум — Development

Хочу использовать модуль питона в логах. Урезаная версия:

from datetime import datetime

print "Datetime: %s"  %datetime.now()
print "Hello world!"
print "Datetime: %s"  %datetime.now()

Выхлоп:

Datetime: 2021-06-20 22:21:39.796000
Hello world!
Datetime: 2021-06-20 22:21:39.796000

Вместо хелловорда поставьте тяжелую задачу, сборка буста например. Чяднт?

 

zanac1 ()

Ищу спецов умеющих в плагины для Eclipse

Форум — Development

Я, автор релизов ScummVM для Symbian, прошу помочь перенести плагины к Eclipse с поддержкой Symbian на новое ядро. Исходный код — github.com/SymbianSource/oss.FCL.sftools.dev.ide.carbidecpp и github.com/SymbianSource/oss.FCL.sftools.dev.eclipseenv.carbideui. И справка SDK не подключается, тоже нужно починить.

 , ,

zanac1 ()

Сайт mingw.org недоступен более месяца

Новости — Разработка
Группа Разработка

Сайт проекта недоступен более месяца, на главной висит заглушка.

Цель данного проекта – сборка нативных программ для Windows с помощью свободного программного обеспечения, в частности порта gcc, binutils и gdb, а также порта bash. Эту нелегкую ношу свободного ПО во мраке проприетарщины они несли свыше десяти лет. Новый проект, который взял на себя их задачи – Mingw-w64. По какой-то причине на сайте Mingw-w64 кривой сертификат.

>>> Подробности

 , ,

zanac1 ()

Вышла тестовая сборка ScummVM 2.2.0 для Symbian

Новости — Open Source
Группа Open Source

ScummVM — это программа, позволяющая запускать некоторые классические адвенчуры и квесты при наличии у вас файлов данных от этих игр. Суть в том, что ScummVM заменяет исполняемые файлы игры, тем самым позволяя играть на тех системах, которые даже не существовали во время их создания!

ScummVM поддерживает более 250 квестов и адвенчур. Поддерживаются многие классические квесты, изданные такими легендарными студиями, как LucasArts, Sierra On-Line, Revolution Software, Cyan, Inc. и Westwood Studios. Вместе с такими знаменитыми играми, как Monkey Island, Broken Sword, Myst, Blade Runner и многими другими, вы сможете отыскать малоизвестные адвенчуры и по-настоящему скрытые шедевры. (Взято с сайта scummvm.org)

В силу ограниченного объема оперативной памяти устройств монолитный исполняемый файл был разбит на 4 части. Гарантированно запускается сам ScummVM , запуск игр не гарантирован кроме Blade Runner и Ultima 8. Эту версию можно ставить паралелльно уже установленной, она не заменит уже установленную. Автор будет признателен за тестирование и отзыв что работает или не работает.

Качать отсюда - https://sourceforge.net/projects/scummvms60git/

 , ,

zanac1 ()

Как правильно инициализировать список(std::list) объектов «на лету»?

Форум — Development

Создаётся список(std::list) объектов с нетривиальным конструктором «на лету», элемент за элементом. Как их правильно инициализировать?

 

zanac1 ()

Как заполнить буфер используя поля струтуры

Форум — Development

В памяти создается пустой массив uint32_t для структуры:

struct Elf32_HashTable
{
  uint32_t nBuckets;
  uint32_t nChains;
  uint32_t bucket[nBuckets];
  uint32_t chain[nChains];
};

Размер массива вычисляется по формуле uint32_t sz = 2 + iNSymbols + iNSymbols/3 + iNSymbols%0x3;, где nBuckets = iNSymbols/3 + iNSymbols%0x3;.

Как можно заполнить поля bucket и chain без дополнительный указателей, причем заполняться будут в случайном порядке?

Можно заполнять через указатели pBucket = &buf[x], но хочется минимализма...

 

zanac1 ()

При обращении по указателю программа падает

Форум — Development

Программа работает с буфером готовых данных char*. Используется две структуры:

struct Buffer
{
  uint32_t bufsize;
  Bufdata* data;
}

struct Bufdata
{
  uint32_t datasize;
  const uint32_t* data;
}

Код:

Buffer* buf = (Buffer*)rawDataAsCharArray;
Bufdata* bdata = buf->data;
printf(bdata->datasize); //упс, упало
Если в Buffer убрать поле Bufdata* data и сделать так, то все норм:
Bufdata* bdata = (Bufdata*)(rawDataAsCharArray+sizeof(Buffer) );
printf(bdata->datasize); //ок
Компилятор - GCC 5.3.0 Чядн?

 ,

zanac1 ()

Вышел порт для линукса утилиты elf2e32

Форум — Talks

elf2e32 создает бинарные файлы для Symbian из elf.

Преимущества этой утилиты над аналогами:

  • кроссплатформенность;
  • код распространяется под Eclipse Public License;
  • стабильность.

Минус:

  • итоговый размер файла на ~15% больше, чем у аналогов из-за ошибки расчета размера бинарного файла.

Ссылка

Перемещено Shaman007 из development

 , ,

zanac1 ()

Самодельный пасер на С++ : не удаляет комментарии

Форум — Development

Написал программу которая должна удалять комментарии в файле исходного кода С++. Условия: // /* и */ не будут содержаться в самих комментариях, строках и символьных константах. Проблемы: '*/' сохраняется в файл. Код:

#include <iostream>
#include <fstream>

using namespace std;

const char *filename = "commandLine.h";
const char *filename2 = "commandLine_out.h";

int main()
{
    ifstream in(filename, ios_base::in);
    if(!in.is_open())
        std::cout << "Input file not found!" << std::endl;

    ofstream out(filename2);
    if(!out.is_open())
        std::cout << "Output file not found!" << std::endl;

    string line;

    bool inComment = false;
    bool afterComment = false;
    int i = 0;

    while(getline(in, line))
    {
        i++;
        line.append("\n");
//        std::cout << inComment << std::endl;

        if(afterComment == true)
        {
//            inComment = false;
            afterComment = false;
        }

        if(line.find("//")!=std::string::npos)
            inComment = true;

        if(line.find("/*")!=std::string::npos)
            inComment = true;
        if(line.find("*/")!=std::string::npos)
            inComment = false;
            afterComment = true;
        std::cout << i << " : " << inComment << "-" << afterComment <&lt; std::endl;
        if((inComment == false)&&(afterComment == true))
        {
            out << line;
        }
    }

    out.close();
    in.close();
    cout << "Hello world!" << endl;
    return 0;
}

 

zanac1 ()

FFMPEG : не собирается под MSYS

Форум — Development

Решил собрать FFMPEG под Symbian. Цель - получить набор статических библиотек : compat, libavcodec, libavfilter, libavformat, libavresample ,libavutil, libpostproc, libswresample, libswscale.

Окружение : WinXP64 sp2, GCCE 4.4.1 от Codesourcery для Symbian, MinGW 4.8.1, Msys

Что сделано : взял с вики ffmpeg сборочный скрипт для Rasberry и доработал:

./configure --enable-cross-compile --cross-prefix=arm-none-symbianelf- --enable-static \
 --disable-shared --arch=arm --target-os=symbian --cc=arm-none-symbianelf-gcc \
 --enable-armv6t2 --cpu=armv6t2 --disable-mmx --incdir=epoc32\include\ffmpeg \
 --disable-runtime-cpudetect --enable-gray --disable-programs --disable-doc \
 --enable-rpath --disable-avdevice --enable-gpl --enable-nonfree \
 --prefix=$EPOCROOT --sysinclude=/d/Symbian/S60_5th_Edition_SDK_v1.0/epoc32/include

В configure есть поддержка Symbian, был получен config.h и config.mak s активированными ассемблерными файлами под armv6t2.

    symbian)
        SLIBSUF=".lib"
        enable dos_paths
        add_cflags --include=$sysinclude/gcce/gcce.h -fvisibility=default --include=$sysinclude/symcpp.h
        add_cppflags -D__GCCE__ -D__SYMBIAN32__ -DSYMBIAN_OE_POSIX_SIGNALS
        ;;

Проблемы: 1) Autoconf нашел лишь часть функций libc, например пропустил всё в math.h. Лог на http://pastebin.com/adatjSkB

2) при сборке в MSYS:

$ make
CC      libavfilter/aeval.o
In file included from libavfilter/aeval.c:26:
./libavutil/avassert.h:30: fatal error: stdlib.h: No such file or directory
compilation terminated.
make: *** [libavfilter/aeval.o] Error 1

ЧЯДНТ?

 , , , ,

zanac1 ()

GCC не видит хедеры библиотеки С

Форум — Development

Пытаюсь собрать libflac под Msys. на команду :

CFLAGS=-O1 configure -mcpu=armv5t --with-ogg-includes=«$EPOCROOT\epoc32\include\tremor» --includedir=$EPOCROOT/epoc32/include/libc --host=arm-none-symbianelf --prefix=$EPOCROOT/epoc32 -includes=$EPOCROOT\epoc32\include\tremor получаю :

checking for ANSI C header files... no checking for sys/types.h... no checking for sys/stat.h... no checking for stdlib.h... no checking for string.h... no checking for memory.h... no checking for strings.h... no checking for inttypes.h... no checking for stdint.h... no checking for unistd.h... no

Нужно получить статическую библиотеку

 , , ,

zanac1 ()

RSS подписка на новые темы